用于超链接可见性的ASP.NET声明性绑定不起作用

时间:2011-06-21 12:57:17

标签: c# .net asp.net

我在usercontrol中有一个超链接,我希望通过声明属性设置可见性,即

<asp:HyperLink ImageUrl="/images/icons/rss.png" Visible="<%# ShowRssIcon %>" ID="FeedHyperLink" runat="server"></asp:HyperLink> 

但是,即使ShowRssIcon为false,它仍然可见。 ShowRssIcon是usercontrol上的一个简单属性集。甚至将ShowRssIcon设置为始终返回false会显示超链接。

但是,手动设置Visible="false"Visible="true"会按预期工作。此外,在Page_Load事件后面的代码中设置属性也可以。

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:4)

由于在<%# expressions时评估了DataBind(),如果您使用了DataBind();,那么您需要在PreRenderComplete中调用protected void Page_PreRenderComplete(object sender, EventArgs e) { DataBind(); } 方法,如..

{{1}}

答案 1 :(得分:2)

您的代码段没有显示对DataBind的任何调用,所以您确定有一个吗?顺便说一句,如果这个超链接不在像ListView或GridView这样的数据绑定控件中,那么从后面的代码中设置属性要好得多。