如何使用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>
输出是:
如您所见,只有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无法编译为无引号版本而其他两个版本的结果错误。
答案 0 :(得分:3)
<%= ... %>
蜜蜂叮咬是调用Response.Write()
的简称。换句话说,它们的结果直接转到写入浏览器的输出流。您不能将其分配给ASP.Net控件的属性。 ASP.Net控件是服务器端控件,这意味着它们具有在生成html之前由服务器处理并稍后写入响应流的属性。这两个项目在不同的抽象层次上工作,并不能很好地融合在一起。
如果要设置控件的text属性,请在代码隐藏文件或同一文件的服务器端方法中执行此操作。如果您不想使用代码隐藏文件或服务器端方法,那么您不需要服务器控件,而只需使用html输入元素。