删除中继器内的查询字符串值
Remove querystring value inside repeater
我有以下代码(为便于阅读删除了部分)
<asp:Repeater ID="rptMenu" runat="server" OnItemDataBound="rptMenu_ItemDataBound">
<ItemTemplate>
<li>
<asp:HyperLink ID="hlCountries" runat="server" class="lang__option">
<asp:Image ID="imgGut" runat="server" />
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
</asp:HyperLink>
</li>
</ItemTemplate>
</asp:Repeater>
在我的项目数据绑定中(再次删除了一些代码以便于阅读,但如果需要可以显示)
protected void rptMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//var nvc = HttpUtility.ParseQueryString(Request.Url.Query);
//nvc.Remove("c");
//string url = Request.Url.AbsolutePath + "?" + nvc.ToString();
hlCountries.NavigateUrl = string.Format("{0}/?c={1}",
System.Web.HttpContext.Current.Request.Url.AbsoluteUri, p.Id);
}
}
页面加载我绑定数据。
选择菜单超链接时,它会根据传递的查询值加载一些数据。
单击菜单项中的下一项时,它会添加另一个参数,即
Page load: getdata
Click first item getdata?c=1
Click second item getdata?c=1c=2
(注意 c= 是如何重复的)我怎样才能避免这种情况发生?我添加了上面注释掉的代码但是没有用?
构建 Uri
时应使用 UriBuilder
而不是字符串连接
var builder = new UriBuilder(this.Request.Url);
var nvc = HttpUtility.ParseQueryString(this.Request.Url.Query);
nvc.["c"] = p.Id;
builder.Query = nvc.ToString();
hlCountries.NavigateUrl = builder.Uri.PathAndQuery;
我有以下代码(为便于阅读删除了部分)
<asp:Repeater ID="rptMenu" runat="server" OnItemDataBound="rptMenu_ItemDataBound">
<ItemTemplate>
<li>
<asp:HyperLink ID="hlCountries" runat="server" class="lang__option">
<asp:Image ID="imgGut" runat="server" />
<asp:Label ID="lblName" runat="server" Text=""></asp:Label>
</asp:HyperLink>
</li>
</ItemTemplate>
</asp:Repeater>
在我的项目数据绑定中(再次删除了一些代码以便于阅读,但如果需要可以显示)
protected void rptMenu_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//var nvc = HttpUtility.ParseQueryString(Request.Url.Query);
//nvc.Remove("c");
//string url = Request.Url.AbsolutePath + "?" + nvc.ToString();
hlCountries.NavigateUrl = string.Format("{0}/?c={1}",
System.Web.HttpContext.Current.Request.Url.AbsoluteUri, p.Id);
}
}
页面加载我绑定数据。
选择菜单超链接时,它会根据传递的查询值加载一些数据。
单击菜单项中的下一项时,它会添加另一个参数,即
Page load: getdata
Click first item getdata?c=1
Click second item getdata?c=1c=2
(注意 c= 是如何重复的)我怎样才能避免这种情况发生?我添加了上面注释掉的代码但是没有用?
构建 Uri
时应使用 UriBuilder
而不是字符串连接
var builder = new UriBuilder(this.Request.Url);
var nvc = HttpUtility.ParseQueryString(this.Request.Url.Query);
nvc.["c"] = p.Id;
builder.Query = nvc.ToString();
hlCountries.NavigateUrl = builder.Uri.PathAndQuery;