假设我有链接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
答案 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 ?.