如何从网址中删除查询字符串参数?

时间:2009-12-23 06:38:28

标签: c# asp.net query-string

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

现在我要删除所有参数,因此它变为:

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

或者我可能只想删除其中一个参数,例如

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

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

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

7 个答案:

答案 0 :(得分:11)

Request.Querystring是只读集合 - 您无法修改它。

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

答案 1 :(得分:2)

使用PostBackUrl属性,例如:

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

答案 2 :(得分:1)

当您完成编辑后,您正在回复邮件,所以只需定义要发布到two.aspx的操作,而不是仅仅回发到自己,这样就会删除get参数。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

迟到但您可以执行此操作以从URL中删除查询字符串而无需其他GET请求。 http://www.codeproject.com/Tips/177679/Removing-Deleting-Querystring-in-ASP-NET

答案 6 :(得分:0)

Try something like this.

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

In this example, I'm checking if the url even contains a query string, and if it does, subtracting getting the "left part" of the string prior to the ?.