gpt4 book ai didi

asp.net - 修改请求查询字符串参数以构建新链接,无需借助字符串操作

转载 作者:行者123 更新时间:2023-12-04 14:52:39 24 4
gpt4 key购买 nike

我想用当前请求的 URI 动态填充链接,但设置一个特定的查询字符串参数。所有其他查询字符串参数(如果有的话)都应该保持不变。而且我事先不知道它们可能是什么。

例如,假设我想建立一个返回当前页面的链接,但查询字符串参数“valueOfInterest”始终设置为“wibble”(我是从 aspx 页面的代码隐藏中执行此操作的,.Net 3.5 in C# FWIW)。

例如,对这两者之一的请求:

/somepage.aspx
/somepage.aspx?valueOfInterest=sausages

会成为:
/somepage.aspx?valueOfInterest=wibble

最重要的是(也许)请求:
/somepage.aspx?boring=something
/somepage.aspx?boring=something&valueOfInterest=sausages

将保留无聊的参数变为:
/somepage.aspx?boring=something&valueOfInterest=wibble

警告:如果asp.net 中有更优雅、更健壮的东西,我想避免字符串操作。但是,如果没有更优雅的东西,那就这样吧。

我做了(一点)作业:
我找到了一篇博客文章,其中建议将请求复制到本地 HttpRequest 对象中,但它仍然有一个用于查询字符串参数的只读集合。我也看过使用 URI 对象,但它似乎没有查询字符串

最佳答案

只要 [1] 您有一个有效的 URL 开始(这似乎是合理的),这将起作用 [2] 您确保您的新值(“香肠”)被正确转义。没有解析,唯一的字符串操作是连接参数。

编辑

这是 C#:

    UriBuilder u = new UriBuilder(Request.Url);
NameValueCollection nv = new NameValueCollection(Request.QueryString);

/* A NameValueColllection automatically makes room if this is a new
name. You don't have to check for NULL.
*/
nv["valueOfInterest"] = "sausages";

/* Appending to u.Query doesn't quite work, it
overloaded to add an extra '?' each time. Have to
use StringBuilder instead.
*/
StringBuilder newQuery = new StringBuilder();
foreach (string k in nv.Keys)
newQuery.AppendFormat("&{0}={1}", k, nv[k]);

u.Query = newQuery.ToString();
Response.Redirect(u.Uri.ToString());

关于asp.net - 修改请求查询字符串参数以构建新链接,无需借助字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2585819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com