无法从ASPX中为Asp:TextBox参数获取任何C#变量

时间:2014-03-07 19:28:58

标签: c# html asp.net css

如何使用C#方法仅从ASPX端动态更改Asp:TextBox项的Text值(或任何其他值)?

我可以使用<%= ....%>访问任何C#变量为div选择一个班级。但不能将它用于任何Aspx项目的Text属性。

这里,三个aspx项无法从C#部分获取变量,但是div很容易使用它来选择CSS类

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="test.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link href="site.css" rel="stylesheet" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="testBox" runat="server" Text="<%= test.TestClass.TestMethod() %>"></asp:TextBox>
     bye bye world!
    </div>
        <div>
    <asp:TextBox ID="TextBox2" runat="server" Text='<%= test.TestClass.TestMethod() %>'></asp:TextBox>
     bye bye world!
    </div>


        <div class="<%=test.TestClass.CustomCSSClass() %>" >hello world! </div>
        <div class='<%=test.TestClass.CustomCSSClass() %>' >hello world! </div>
        <div class=<%=test.TestClass.CustomCSSClass() %> >hello world! </div>
    </form>
</body>
</html>

输出是:

enter image description here

如您所见,只有div接受&lt;%= ...%&gt;他们的风格。但Asp:TextBox项目存在问题并直接打印C#代码而不是值。

这是CSS(不相关但无论如何):

body {
}

.CustomCSSClass {
    margin-top:50px;width:300px;height:200px;background-color:red;
}

以下是我测试的C#方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace test
{
    public class TestClass
    {
        public static string TestMethod()
        {
            return "ASPX and HTML and CSS";
        }

        public static string CustomCSSClass()
        {
            return "CustomCSSClass";
        }
    }
}

虽然双引号,单引号甚至无引号版本可用于选择样式类,但aspx无法编译为无引号版本而其他两个版本的结果错误。

1 个答案:

答案 0 :(得分:3)

<%= ... %>蜜蜂叮咬是调用Response.Write()的简称。换句话说,它们的结果直接转到写入浏览器的输出流。您不能将其分配给ASP.Net控件的属性。 ASP.Net控件是服务器端控件,这意味着它们具有在生成html之前由服务器处理并稍后写入响应流的属性。这两个项目在不同的抽象层次上工作,并不能很好地融合在一起。

如果要设置控件的text属性,请在代码隐藏文件或同一文件的服务器端方法中执行此操作。如果您不想使用代码隐藏文件或服务器端方法,那么您不需要服务器控件,而只需使用html输入元素。