【问题标题】:How to remove query string parameters from the url?如何从 url 中删除查询字符串参数?
【发布时间】:2009-12-23 06:38:27
【问题描述】:

假设我有链接http://www.somesite.com/file.aspx?a=1&b=2

而现在我要去掉所有的参数,所以变成:

http://www.somesite.com/file.aspx

或者我可能只想删除 1 个参数,例如

http://www.somesite.com/file.aspx?b=2

有没有办法在 C# 中执行上述操作?发生的事情是我来自另一个页面,在 url 中有一个名为 edit 的参数,但是当页面回发时,编辑参数仍然存在,所以它仍然认为它处于编辑模式。示例:

用户 A 转到第 one.aspx 页并单击编辑链接。它们被带到 two.aspx?edit=true。在页面加载期间,它看到查询字符串参数编辑不为空,并将内容置于编辑模式。用户完成编辑后,页面刷新,但 url 仍然是 two.aspx?edit=true 并保持内容处于编辑模式,而实际上应该是 two.aspx

【问题讨论】:

    标签: c# asp.net query-string


    【解决方案1】:

    Request.Querystring 是只读集合 - 你不能修改它。

    如果您需要删除或更改查询字符串中的参数,唯一的出路是使用更新的查询字符串触发新的 GET 请求 - 这意味着您必须使用更新的 URL 执行 Response.Redirect。这将导致您丢失当前页面的视图状态。

    【讨论】:

    • 这就是我实际在做的事情,所以我想我被困住了。谢谢。
    • 如果你使用会话,你没有问题
    【解决方案2】:

    使用 PostBackUrl 属性,例如:

    <asp:Button ID="DoneEditingButton" runat="server" Text="Done editing" PostBackUrl="~/two.aspx" />
    

    【讨论】:

      【解决方案3】:

      当您完成编辑后,您正在回发,因此只需定义要发布到 two.aspx 的操作,而不是仅仅回发到自身,这样它会丢弃 get 参数。

      【讨论】:

        【解决方案4】:

        如何检查 Page.IsPostBack 以查看当前请求是否为回发?

        【讨论】:

          【解决方案5】:

          如果你只有字符串,你可以使用:

          strinULR.Split('?').First();
          

          strinULR.Split('?').FirstOrDefault();
          

          【讨论】:

          • 网址可以编码和'?'变为“%3F”。这种操作应该使用 Uri 类或类似的类来完成
          【解决方案6】:

          试试这样的。

          if (url.Contains("?"))
                      url = url.Substring(0, url.IndexOf("?"));
          

          在此示例中,我正在检查 url 是否甚至包含查询字符串,如果包含,则在 ? 之前减去获取字符串的“左侧部分”。

          【讨论】:

          • 欢迎来到 Stack Overflow!感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。一个正确的解释would greatly improve 其长期价值,通过展示为什么这是解决问题的好方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
          • 再一次,可以对 url 进行编码和 '?'变为“%3F”。这种操作应该使用 Uri 类或类似的类来完成
          【解决方案7】:

          晚了,但您可以这样做以从 URL 中删除查询字符串,而无需另一个 GET 请求。 http://www.codeproject.com/Tips/177679/Removing-Deleting-Querystring-in-ASP-NET

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-20
            • 2018-12-08
            • 2019-01-14
            • 1970-01-01
            • 1970-01-01
            • 2011-02-02
            相关资源
            最近更新 更多