[英]How to remove query string parameters from the url?
假设我有链接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并且它将内容置于编辑模式。 用户完成编辑后,页面会刷新,但网址仍为two.aspx?edit = true并保持内容处于编辑模式,实际上应该是two.aspx
Request.Querystring是只读集合 - 您无法修改它。
如果您需要删除或更改查询字符串中的参数,那么只能触发带有更新的查询字符串的新GET请求 - 这意味着您必须使用更新的URL执行Response.Redirect。 这将导致您丢失当前页面的视图状态。
使用PostBackUrl属性,例如:
<asp:Button ID="DoneEditingButton" runat="server" Text="Done editing" PostBackUrl="~/two.aspx" />
当您完成编辑后,您正在进行回发,所以只需定义要发布到two.aspx的操作,而不是仅仅回发到自己,这样就会删除get参数。
如何检查Page.IsPostBack以查看当前请求是否为回发?
如果你只有字符串,你可以使用:
strinULR.Split('?').First();
要么
strinULR.Split('?').FirstOrDefault();
迟到但您可以执行此操作以从URL中删除查询字符串而无需其他GET请求。 http://www.codeproject.com/Tips/177679/Removing-Deleting-Querystring-in-ASP-NET
尝试这样的事情。
if (url.Contains("?"))
url = url.Substring(0, url.IndexOf("?"));
在这个例子中,我正在检查url是否包含查询字符串,如果是,则减去在?之前获取字符串的“左侧部分”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.