如何在aspx页面中内联动态设置独立(不在gridview)超链接控件的NavigateUrl属性?
我尝试过以下操作,但它没有用。
<asp:HyperLink id="MyLink"
NavigateUrl="../mypage.aspx?id=<%= pageid %>"
runat="server">My Page</asp:HyperLink>
答案 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>