代码之家  ›  专栏  ›  技术社区  ›  dtc

在线动态设置超链接控件的NavigateUrl属性

  •  13
  • dtc  · 技术社区  · 14 年前

    我试过做以下的事情,但没有成功。

    <asp:HyperLink id="MyLink"
      NavigateUrl="../mypage.aspx?id=<%= pageid %>"
      runat="server">My Page</asp:HyperLink>
    
    3 回复  |  直到 6 年前
        1
  •  32
  •   Darin Dimitrov    14 年前

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

    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 <%# 语法):

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

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


    <a href="<%= this.ResolveUrl("~/mypage.aspx?id=" + pageid) %>">
        My Page
    </a>
    
        2
  •  4
  •   Marko    14 年前

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

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

    然后像。。

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

    提供的pageid存在

        3
  •  0
  •   user5359794    9 年前
    <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>