asp.net – 更改单个URL查询字符串值
我有一个ASP.NET页面,它在查询字符串中需要一些参数:
search.aspx?q=123&source=WebSearch 这将显示搜索结果的第一页。现在在该页面的呈现中,我想显示一组链接,允许用户跳转到搜索结果中的不同页面。我可以通过追加& page = 1或& page = 2等来做到这一点。 它变得复杂的是,我想保留原始页面中的输入查询字符串,除了我想要更改的每个参数。在其他组件使用的url中可能还有其他参数,我试图替换的值可能已经被定义了,也可能不会被定义: search.aspx?q=123&source=WebSearch&page=1&Theme=Blue 在这种情况下,要生成到下一页结果的链接,我想将page = 1更改为page = 2,而其余的查询字符串不变。 有没有内建的方法来做到这一点,还是需要手动执行所有的字符串解析/重组? 解决方法
您不能直接修改
QueryString,因为它是唯读的。您将需要获取值,修改它们,然后将它们放在一起。尝试这个:
var nameValues = HttpUtility.ParseQueryString(Request.QueryString.ToString()); nameValues.Set("page","2"); string url = Request.Url.AbsolutePath; string updatedQueryString = "?" + nameValues.ToString(); Response.Redirect(url + updatedQueryString);
或者,您可以使用索引器添加新密钥或修改现有密钥: nameValues["temp"] = "hello!"; // add "temp" if it didn't exist nameValues["temp"] = "hello,world!"; // overwrite "temp" nameValues.Remove("temp"); // can't remove via indexer 您可能需要添加一个使用System.Collections.Specialized;以使用NameValueCollection类。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – NHibernate – 访问同一数据库的两个SessionFac
- ASP.NET工作进程仍然以31kb的大小返回数据
- AntiForgery令牌使用ASP.NET5 Web API而不使用NET46上的Sys
- asp.net – ApplicationInsight导致网站在启动时挂起
- asp.net-mvc – 如何将Azure AD身份验证用于单独的非Azure
- asp.net-mvc – 什么CAPTCHA系统与ASP.NET MVC兼容?
- asp.net-mvc-2 – ASP.NET MVC2 Ninject NLog(shared hosti
- ASP.NET ListView:如何在每个N项中插入“特殊”项?
- Asp.net – 尝试访问工作网页时出错
- asp.net – 无论如何要在上传之前确定文件大小?