【问题标题】:Changing the GET request query string value of the address bar from the view从视图中更改地址栏的 GET 请求查询字符串值
【发布时间】:2016-01-09 18:52:59
【问题描述】:

这可能吗?

假设我们有这样的东西:

public ActionResult sim(string test)
{
        return View();
}

所以我可以通过这样做来调用它:

localhost:55319/test/rat/sim?test=hi

是否可以显式更改测试查询字符串的值?

我试过了

@{
Request.Params.Set("test","hello");
}

我的程序刚刚中断,我想要更改test 的查询字符串值,而无需再次使用另一个获取请求,并且仅从视图本身。

【问题讨论】:

  • 查询字符串是通过http请求传递值的非常通用的方式,您可以在创建链接时决定查询字符串!但我不明白你为什么要在收到请求后更改它?
  • 目前仅用于实验目的,我只想知道是否可以通过代码更改它。我知道可以通过Request 访问它,但也可以更改它们吗?
  • 您是否尝试在浏览器 url 中更改它(在地址栏中)?
  • 长而短,查询字符串是 URL 的一部分,即唯一标识资源的事物的一部分。当您更改它时,您正在更改您链接到的资源,这对于浏览器意味着加载一个新页面。如果不执行重定向,您无法在服务器端更改它。正是因为这个原因,Request只读的,这就是为什么您不能将参数设置为其他内容而不会出错。

标签: c# asp.net-mvc http url query-string


【解决方案1】:

A) 服务器端:您可以通过重定向到具有不同参数值的同一页面来更改查询字符串。客户端将看到可能不太愉快的页面刷新。

return Redirect("/test/rat/sim?test="+ newValue);

B) 客户端:如果您只是希望浏览器上的 URL 看起来不同(无需刷新页面,即重定向到新页面),您需要使用 javascript 的 History 对象 (https://developer.mozilla.org/en-US/docs/Web/API/History_API),很遗憾,它不是旧浏览器支持。

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 2020-12-02
    • 2016-05-04
    • 1970-01-01
    • 2016-08-02
    • 2019-05-29
    • 2017-12-18
    相关资源
    最近更新 更多