在非数据绑定的ASP.NET控件上动态分配属性

时间:2010-03-18 16:28:02

标签: asp.net

例如,假设我有一个HyperLink:

<asp:HyperLink runat="server" Text="Foo" NavigateUrl="foo.aspx" />

如何在服务器端设置NavigateUrl,而不必去代码隐藏?

这当然不起作用:

<asp:HyperLink runat="server" Text="Foo" NavigateUrl="<%= urlString %>" />

(其中urlString可能是我之前在页面中创建的字符串)

这不起作用,因为HyperLink不在数据绑定控件中:

<asp:HyperLink runat="server" Text="Foo" NavigateUrl='<%# urlString %>' />

我想我可以使用标准的锚元素:

<a href="<%= urlString %>">Foo</a>

但我不想混淆HTML和ASP.NET控件,能够为其他控件执行此操作会很方便。

肯定有办法吗?

2 个答案:

答案 0 :(得分:1)

尝试在内联代码块中设置属性:

<asp:HyperLink runat="server" ID="MyLink" Text="Foo"  />
<% MyLink.NavigateUrl="foo.aspx"; %>

答案 1 :(得分:1)

  

这当然不起作用:

当然可以。

  

这不起作用,因为   HyperLink不在数据绑定范围内   控制:

将Page视为数据绑定控件。 你需要调用它的DataBind方法。

Page.DataBind();

也许您还需要添加ID属性。如果这不起作用,请尝试显示属性而不是变量。