动态设置内联的超链接控件的NavigateUrl属性

时间:2010-08-29 08:51:54

标签: asp.net .net hyperlink webforms

如何在aspx页面中内联动态设置独立(不在gridview)超链接控件的NavigateUrl属性?

我尝试过以下操作,但它没有用。

<asp:HyperLink id="MyLink"
  NavigateUrl="../mypage.aspx?id=<%= pageid %>"
  runat="server">My Page</asp:HyperLink>

3 个答案:

答案 0 :(得分:28)

您可以在代码隐藏中执行此操作:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string pageid = "123";
        MyLink.NavigateUrl = string.Format("../mypage.aspx?id={0}", pageid);
    }
}

更新:

现在@Marko Ivanovski在评论中指出我这个超链接在GridView里面,我在开始时没有注意到最简单的方法是使用数据绑定(<%#语法):< / p>

<asp:TemplateColumn>
    <ItemTemplate>
        <asp:HyperLink 
            id="MyLink" 
            NavigateUrl='<%# Eval("pageid", "~/mypage.aspx?id={0}")  %>'
            runat="server">
        My Page
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateColumn>

在这种情况下,pageid是数据源的属性。


更新2:

你真的需要服务器端控制吗?怎么样:

<a href="<%= this.ResolveUrl("~/mypage.aspx?id=" + pageid) %>">
    My Page
</a>

答案 1 :(得分:4)

您实际上可以在代码隐藏文件中编写一个简单的字符串方法。

示例

public string formatUrl(string pageId) {
    return "../mypage.aspx?id=" + pageId;
}

然后像...一样使用它。

<asp:HyperLink id="MyLink" NavigateUrl="<%= formatUrl(pageid) %>" runat="server">My Page</asp:HyperLink>

提供了pageid

答案 2 :(得分:0)

<asp:TemplateField HeaderText="Name" HeaderStyle-Width="100">
    <ItemTemplate>
        <a href="f.aspx?id=<%# DataBinder.Eval(Container, "DataItem.i")%>">
            <asp:Label ID="lblN" Font-Underline="true" runat="server" Width="80px" Text='<%#DataBinder.Eval(Container.DataItem,"n")%>' />
        </a>
    </ItemTemplate>
</asp:TemplateField>