如何在控件标记中包含条件语句
本文关键字:包含 条件 语句 控件 | 更新日期: 2023-09-27 17:58:27
我在Repeater
中有一个Hyperlink
。我想要的是将NavigateUrl
设置为页面Url,并在末尾添加查询字符串。我想出了:
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# Request.Url + "?Id= + Eval("Id") %>' />
这很好用。问题是我想知道如何添加一些逻辑,这样如果Request.Url
已经包含查询字符串,那么就不添加id查询字符串部分。
如何在html页面中执行此操作?请记住,我不能为此使用javascript。
您必须检查两件事才能正确构建导航url:
- url是否包含Id参数
- url是否已经包含任何参数
使用以下内容:
<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 %>' />
这应该可以工作。
<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")) %>' />
<asp:Hyperlink ID="myLink" runat="server" Text="My Link"
NavigateUrl='<%# Request.RawUrl.Contains("?") ? Request.RawUrl :
Request.RawUrl + "?Id= + Eval("Id") %>' />