【问题标题】:ASP.NET MVC parsing variables wihout URL query string没有 URL 查询字符串的 ASP.NET MVC 解析变量
【发布时间】:2009-06-14 03:06:53
【问题描述】:

标题

我想将一些变量从一个页面传递到另一个页面,但我不希望它们出现在 URL 中。当我使用表单发布 ActionResult 时,它工作正常。但是,当我这样做时

return RedirectToAction("Trackers",new{page = 1, orderby=desc});

我得到了网址:

http://examplesite.com/Trackers?page=1&orderby=desc

有什么方法可以让我获得以下 URL,但仍然“在幕后”传递 page 和 orderby 变量?

http://examplesite.com/Trackers

谢谢 TheLorax

【问题讨论】:

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


    【解决方案1】:

    我不确定按照您的建议执行是否是个好主意,但是,您可以使用 TempData(与 ViewData 相同的位置)在重定向之前保存您的信息。我相信在您的下一个请求之后,临时数据中的任何内容都会被清除。

    【讨论】:

    • 您好 HBoss,感谢您的回复,这正是我想要的。我想传递的变量是我不希望用户看到的东西,这也是我想不可见地传递它的原因。你的答案正是我想要的。以前我什至对 TempData 一无所知,但现在我知道了,再次感谢您。
    【解决方案2】:

    您可以传递包含页码和 orderby 的 Model 对象而不是匿名对象,并让您的视图继承您正在传递的对象的模型类。然后,您的带有页码和 orderby 的模型对象将可用于视图,而无需使用查询字符串

    但是,这不是执行此操作的首选方法。您的模型对象应保留用于其预期目的,即将实际数据传递到您的视图。

    【讨论】:

      【解决方案3】:

      当您使用 RedirectToAction 方法时,浏览器将收到来自服务器的 http 重定向响应,然后将对新 URL 发出 GET 请求。
      我认为没有办法让浏览器在重定向时发出 POST 请求。

      此外,最好通过查询字符串传递这些变量,以便用户能够为页面添加书签。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        相关资源
        最近更新 更多