在转发器中为asp:超链接提供代码后面的URL

时间:2014-07-31 13:35:57

标签: c# asp.net

好的,想想下一个情况:
我有一个带有转发器的.ascx文件,在这个转发器中有一个asp:超链接 是否可以从后面的代码中设置此超链接的URL?

最后,链接将始终指向相同的网址,但需要重复x次。

测试代码ascx:

<asp:Repeater runat="server" ID="repeater" OnItemDataBound="repeater_ItemDataBound">
  <ItemTemplate>
    <div class="container">
        <asp:HyperLink ID="hypUrl" runat="server" Text="Dit is een test link">   </asp:HyperLink>
    </div>
  </ItemTemplate>
</asp:Repeater>

通常在后面的代码中我会做类似的事情:

hypUrl.NavigateUrl = Url;

但由于超链接在转发器中,它似乎找不到ID 任何人都知道实现这一目标的最佳方法是什么?

提前致谢!

2 个答案:

答案 0 :(得分:3)

在转发器 ItemDataBound事件中。这样做

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || 
        e.Item.ItemType == ListItemType.AlternatingItem)
    {
            HyperLink hypLink = (HyperLink)e.Item.FindControl("hypUrl");
            hypLink.NavigateUrl = "http//www.stackoverflow.com";
    }
}

答案 1 :(得分:2)

是的,在repeater_ItemDataBound事件中:

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        // Find the hyperlink
        HyperLink hypUrl = (HyperLink)e.Item.FindControl("hypUrl");

        // Set the property
        hypUrl.NavigateUrl = "foo";
    }
}