如何让我的ASP.NET服务器控件采取嵌入代码块的属性值?
-
23-08-2019 - |
题
我有名称的属性的自定义服务器控制。当使用控制,我想设置标题的值在aspx页面像这样:
<cc1:customControl runat="server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>
当我这样做,但是,我得到确切的字符串<%= PagePropertyValue%>显示,而不是属性值,我想看到的。
所以试图数据绑定表达式(如下面所建议的)之后。我不明白的是看不好的字符串常量,但我没有得到任何东西要么。
<cc1:customControl runat="server" Title='<%# PagePropertyValue%>' >
more content
</cc1:customControl>
什么是我需要做的,我自定义的控制采取这种价值?或者是有什么我需要做的网页。
解决方案
您不能。 <%=%>将直接写入字符串到响应流,构造该服务器控制后恰好。请参见这个帖子一个解释。
因此,它的任一代码隐藏,或<%#+数据绑定作为扎卡里暗示。
其他提示
将作为后续我自己的问题,我发现,我真正想要的是使用ASP.NET表达式使用<%$语法,因为我想要做的就是把本地化的内容。
此可以与在服务器控制侧显然没有额外的处理来进行。
<cc1:customControl runat="server" Title='<%$ Resouces: ResourceFile, ContentKey %>' >
more content and controls
</cc1:customControl>
此工作得很好。
尝试使用绑定语法:
<%# PagePropertyValue %>
有关的建议绑定属性值正确地工作,就会在ASPX或ASCX文件具有这样的:
<cc1:customControl runat="server" Title='<%# PagePropertyValue %>' >
more content
</cc1:customControl>
您接着会需要在你的页面实际数据绑定至极,你必须在你的代码添加这个隐藏文件(在C#代码)
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
这样,它在ASCX或aspx文件将绑定数据。
请注意,这是特定的控制属性。当使用<%=语法外控制属性的语法工作正常的页面意味着其他地方。所以这 <%= GetCapitalUserName()%> 将调用正确的方法和注入在页面中调用的结果。
不隶属于 StackOverflow