我在Hyperlink
内有一个Repeater
。我想要的是将NavigateUrl
设置为页面Url并将查询字符串添加到结尾。我提出了:
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# Request.Url + "?Id= + Eval("Id") %>' />
这很好用。问题是我想要一些如何添加一些逻辑,如果Request.Url
已经包含查询字符串,那么就不添加id查询字符串部分。
如何在html页面中执行此操作?请记住,我不能使用 javascript 。
答案 0 :(得分:1)
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# Request.RawUrl.Contains("?") ? Request.RawUrl :
Request.RawUrl + "?Id= + Eval("Id") %>' />
答案 1 :(得分:1)
您必须检查两件事情才能正确构建导航网址:
使用以下内容:
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# Request.QueryString["Id"] == null ?
(Request.Url.Contains("?") ? Request.Url + "&Id= + Eval("Id") :
Request.Url + "?Id= + Eval("Id")) : Request.Url %>' />
答案 2 :(得分:1)
这应该有用。
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# (Request.Url.ToString().IndexOf("?") > -1 ? Request.Url.ToString() : Request.Url.ToString() + "?Id= + Eval("Id")) %>' />
您可能还想在后面的代码上创建受保护的方法,或者如果您需要在多个位置创建一个扩展方法。
protected string AddIdToRequestUrl(object id)
{
return Request.Url.ToString().IndexOf("?") > -1 ?
Request.Url.ToString() :
Request.Url.ToString() + "?Id=" + id.ToString();
}
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# AddIdToRequestUrl(Eval("Id")) %>' />