C# 在服务器端属性中未正确解释内联代码
以下面的代码为例:C# 在服务器端属性中未正确解释内联代码,c#,.net,asp.net,controls,C#,.net,Asp.net,Controls,以下面的代码为例: <asp:TextBox ID="txtFirstName" runat="server" title='<%=Resources.Constants.EmptyFirstName%>' /><em>*</em> * 这实际上会生成标题属性,而不是执行代码(因此返回正确的值) 这有什么原因吗?有修复方法吗?为什么不在代码隐藏文件的OnInit中设置值?为什么不直接在代码隐藏文件中设置属性值 txtFirstName.Attr
<asp:TextBox ID="txtFirstName" runat="server" title='<%=Resources.Constants.EmptyFirstName%>' /><em>*</em>
*
这实际上会生成标题属性
,而不是执行代码(因此返回正确的值)
这有什么原因吗?有修复方法吗?为什么不在代码隐藏文件的OnInit中设置值?为什么不直接在代码隐藏文件中设置属性值
txtFirstName.Attributes.Add("title",Resources.Constants.EmptyFirstNam);
服务器端控件无法使用已解释的标记“”。只在代码中设置值比较容易,但如果您确实希望在aspx中使用逻辑,则可以使用数据绑定表达式: 在aspx上,将标记更改为数据绑定标记:
<asp:TextBox ID="txtFirstName" runat="server" title='<%#=EmptyName()%>' /><em>*</em>
这很麻烦,因为如果您决定在aspx文件中执行此操作,而不是在后面的代码中执行此操作,则仍然需要调用
txtFirstName.DataBind(),查看这篇关于Expression Builders的文章:,这仅仅是因为asp:TextBox
没有title属性,但是当像这样添加时,它会在客户端呈现(而我会得到一个编译器错误),我使用了这篇文章-我没有意识到有attributes属性
public string EmptyName() {
return Resources.Constants.EmptyFirstName
}