代码之家  ›  专栏  ›  技术社区  ›  Syed Yawar

通过浏览器中URL字符串可见的“重定向到操作”传递模型

  •  1
  • Syed Yawar  · 技术社区  · 8 年前

    问题是我在模型中传递一些数据,从同一个控制器的第一个动作传递到第二个动作 但模型中的数据在URL查询字符串中可见。 this is the picture of action where I'm redirection some data

    这是查询字符串可见的方式 enter image description here

    现在

    1-是否有任何解决方案可以在查询字符串中隐藏该数据 除使用临时数据外

    2-为什么从客户端重定向到操作??

    3-它似乎是通过重定向中的Get方法传递数据,我有没有办法在Body(即Post)中传递数据。

    1 回复  |  直到 8 年前
        1
  •  3
  •   ADyson    8 年前

    MVC RedirectToAction方法只需在响应中向客户端(本例中为浏览器)发送一个名为“Location”的HTTP头,并将状态代码设置为302“Found”,以指示建议的重定向。该标头包含您指定的视图的URL,并将任何模型数据放置到查询字符串中。

    客户端可以选择是否访问该URL。浏览器通常会自动跟踪链接,因为这样做很方便用户。其他HTTP客户端可能不会这样做。这就是它的工作原理-这对整个web来说是通用的,而不仅仅是MVC。重定向始终作为GET完成,不可能通过任何其他HTTP方法进行重定向。

    如果要仅显示视图而不重定向,请使用

    return View("addLeaveEntitlement", result.Model)
    

    然后只有一个请求,没有重定向,URL根本没有更改(甚至到“添加”视图的常规URL也没有更改-这可能是可取的,也可能是不可取的)。