C# 重写 URL 参数

3

我有一个简单的任务,但没有简单的解决方案。

浏览器中有一个需要更改或重写的参数。

例如 www.contoso.com/countries.aspx?country=UK

我只需要重写参数而不检查URL,因此它可能会出现以下情况:

www.contoso.com/countries.aspx?country=France

我已经尝试过类似的方法,但没有成功。

string parameter2 = Request.QueryString["country"];
Context.RewritePath(parameter2.Replace("?country=", "France"));

1
你是在什么时候尝试做这件事? - walther
1
在像按钮或超链接这样的事件之后,代码应该只更改该参数而不更改其他任何内容。 - user1211929
4个回答

1
你可以这样做:
var url = "www.contoso.com/countries.aspx?country={0}";
var country = "UK"; url = String.Format(url, country);
或者你可以这样做:
var url = Request.Url.AbsolutePath;
var country = Request.QueryString["country"]; url = url.Replace(country, "UK");
然后:

Response.Redirect(url);


啊,所以这只有在您事先知道URL的情况下才能起作用,我猜您事先不知道它。 - Carl Winder
1
它运行得非常好,我稍微调整了你的示例,response.redirect让我明白如何重新提交字符串,谢谢。 - user1211929

0

查看this的详细解决方案,以解决您的问题。


0

你能不能将整个URL读入一个字符串,以'?'为分隔符进行分割,然后将你的新内容添加到字符串的第一部分中呢?

就像这样:

    var url = Request.QueryString;
    var newUrl = url.split('?');
    url = newUrl[0] + "?country=France";

我不知道那是否可行,这只是一个想法。


不必要的。为什么要这样做?他在重写方面遇到了问题,获取参数不应该是一个问题... - walther

0
如果您想要替换整个查询字符串,请使用:
newVal = string.LastIndexOf("?");

然后

URL.Replace(oldVal, newVal);

如果你在查询字符串中只有一个参数,并且想要替换它的值,可以使用以下方法:

newVal = string.LastIndexOf("=");
URL.Replace(oldVal, newVal);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接