我有名称的属性的自定义服务器控制。当使用控制,我想设置标题的值在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()%>      将调用正确的方法和注入在页面中调用的结果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top