【问题标题】:c# rewrite url parameterc#重写url参数
【发布时间】:2012-06-16 06:48:46
【问题描述】:

我有一个简单的任务,但没有简单的解决方案。 我在浏览器中有一个参数需要更改或重写

例如 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"));

【问题讨论】:

  • 你什么时候尝试这样做?
  • 在按钮或超链接之类的事件之后,代码应该只更改该参数而不更改其他任何内容

标签: c# asp.net url-rewriting


【解决方案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);

【讨论】:

  • 谢谢,网址已经是 www.contoso.com/countries.aspx?country=UK,我需要重新发布参数。
  • ahhh 所以这只有在你事先知道我猜你不知道的 URL 的情况下才有效
  • 效果很好,我稍微调整了你的例子,response.redirect 让我明白了如何重新回发字符串谢谢
【解决方案2】:

你能不能把整个 URL 读成一个字符串,把它分成'?'然后将你的新位添加到字符串的第一部分?

类似这样的:

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

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

【讨论】:

  • 不必要的。为什么要这样做?他有重写的问题,获取参数应该不是问题......
【解决方案3】:

如果要替换完整的查询字符串,请使用

newVal = string.LastIndexOf("?");

然后

URL.Replace(oldVal, newVal);

或者,如果您在查询字符串中只有一个参数并且只想替换它的值,请使用

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

【讨论】:

    【解决方案4】:

    查看this的详细回复以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 1970-01-01
      • 2013-08-12
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多