【问题标题】:Remove querystring value inside repeater删除中继器内的查询字符串值
【发布时间】:2020-04-03 15:43:41
【问题描述】:

我有下面的代码(为了便于阅读,删除了部分)

      <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);
        }
    }

页面加载我绑定数据。

选择菜单超链接时,它将参数添加到URL,基于传递的查询值加载一些数据。

当单击菜单项中的下一项时,它会添加另一个参数,即

Page load: getdata
Click first item getdata?c=1
Click second item getdata?c=1c=2

(注意 c= 是如何重复的)我怎样才能避免这种情况发生?我添加了上面注释掉的代码,但是没有用?

【问题讨论】:

  • 试试(e.Item.FindControl("hlCountries") as HyperLink).NavigateUrl = . . .
  • 我会在哪里尝试?
  • 哈哈。当然不是hlCountries.NavigateUrl = . . .。还有什么地方? :)
  • 您总是访问rptMenu_ItemDataBound 中的同一个实例,但您实际上想要访问该转发器项内的超链接。 e.Item.FindControl 将给出由于该项目而呈现的超链接,驻留在同一行的超链接是数据绑定

标签: c# asp.net webforms repeater request.querystring


【解决方案1】:

在构建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;

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多