在服务器端属性中不能正确解释内联代码

本文关键字:解释 代码 服务器端 属性 不能 | 更新日期: 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