在服务器端属性中不能正确解释内联代码
本文关键字:解释 代码 服务器端 属性 不能 | 更新日期: 2023-09-27 18:04:12
取以下代码:
<asp:TextBox ID="txtFirstName" runat="server" title='<%=Resources.Constants.EmptyFirstName%>' /><em>*</em>
这实际上生成了<%=Resources.Constants.EmptyFirstName%>
的title属性,而不是执行代码(因此返回正确的值)。
这有什么原因吗?有解决办法吗?
为什么不直接在代码文件中设置属性值呢?
txtFirstName.Attributes.Add("title",Resources.Constants.EmptyFirstNam);
服务器端控件不能使用解释标记'<%= %>'。在后面的代码中设置值更容易,但是如果您真的想要aspx中的逻辑,可以使用数据绑定表达式:
在你的aspx上,把你的标签改成数据绑定标签:<asp:TextBox ID="txtFirstName" runat="server" title='<%#=EmptyName()%>' /><em>*</em>
在代码后面添加这个函数:
public string EmptyName() {
return Resources.Constants.EmptyFirstName
}
这很麻烦,因为您仍然需要调用txtFirstName.DataBind()
为什么不在CodeBehind-file中设置OnInit中的值?
如果您决定在aspx文件中这样做,而不是在后面的代码中这样做,请查看这篇关于表达式构建器的文章:https://web.archive.org/web/20210304125044/https://www.4guysfromrolla.com/articles/022509-1.aspx