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

时间:2011-08-01 09:13:57

标签: c# .net asp.net controls

请使用以下代码:

<asp:TextBox ID="txtFirstName" runat="server" title='<%=Resources.Constants.EmptyFirstName%>' /><em>*</em>

这实际上会生成<%=Resources.Constants.EmptyFirstName%>的title属性,而不是执行代码(因此返回正确的值)。

这有什么理由吗?有修复吗?

4 个答案:

答案 0 :(得分:1)

为什么不简单地在代码隐藏文件中设置属性值?

txtFirstName.Attributes.Add("title",Resources.Constants.EmptyFirstNam);

答案 1 :(得分:1)

服务器端控件不能使用解释标签'&lt;%=%&gt;'。在后面的代码中设置值更容易,但如果你真的想要aspx中的逻辑,你可以使用数据绑定表达式:

在您的aspx上,将您的标记更改为数据绑定标记:

<asp:TextBox ID="txtFirstName" runat="server" title='<%#=EmptyName()%>' /><em>*</em>

在您的代码中添加此功能:

public string EmptyName() {
    return Resources.Constants.EmptyFirstName
}

这很麻烦,因为您仍然需要拨打txtFirstName.DataBind()

答案 2 :(得分:0)

为什么不在Code Behind-file中设置OnInit中的值?

答案 3 :(得分:0)

如果您决定在aspx文件中执行此操作而不是后面的代码,请查看有关Expression Builders的文章:http://www.4guysfromrolla.com/articles/022509-1.aspx