Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在服务器端属性中未正确解释内联代码_C#_.net_Asp.net_Controls - Fatal编程技术网

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
}