我有一个自定义服务器控件,其属性为Title。使用控件时,我想在aspx页面中设置标题的值,如下所示:
<cc1:customControl runat="server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>
然而,当我这样做时,我得到的确切字符串&lt;%= PagePropertyValue%&gt;显示而不是我想看到的属性值。
因此在尝试数据绑定表达式后(如下所示)。我没有得到看起来很糟糕的字符串文字,但我也没有得到任何其他东西。
<cc1:customControl runat="server" Title='<%# PagePropertyValue%>' >
more content
</cc1:customControl>
我需要对自定义控件做些什么才能获得这种价值?或者我需要对页面做些什么。
答案 0 :(得分:7)
所以它的代码隐藏,或Zachary建议的&lt;%#+数据绑定。
答案 1 :(得分:2)
作为我自己问题的后续内容,我发现我真正想要的是使用&lt;%$语法来使用ASP.NET表达式,因为我想要做的是放入本地化内容。
这可以通过服务器控制端显然没有额外处理来完成。
<cc1:customControl runat="server" Title='<%$ Resouces: ResourceFile, ContentKey %>' >
more content and controls
</cc1:customControl>
这很好用。
答案 2 :(得分:1)
尝试使用数据绑定语法:
<%# PagePropertyValue %>
答案 3 :(得分:1)
要使bind属性值按照建议正常工作,您将在aspx或ascx文件中使用它:
<cc1:customControl runat="server" Title='<%# PagePropertyValue %>' >
more content
</cc1:customControl>
然后,您需要在页面中实际绑定数据,您必须在代码隐藏文件中添加此数据(C#中的代码)
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
这样它就会绑定你的ascx或aspx文件中的数据。
答案 4 :(得分:0)
请注意,这特定于控件属性。当使用&lt;%=语法外部控制属性意味着页面中的任何其他位置时,语法按预期工作。所以这 &LT;%= GetCapitalUserName()%&GT; 将调用正确的方法并在页面中注入调用的结果。