ASP.NET MVC解析变量没有URL查询字符串

时间:2009-06-14 03:06:53

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

标题

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

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

我收到了网址:

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

有没有什么办法可以获得以下网址,但仍然会在“幕后”传递页面和orderby变量?

http://examplesite.com/Trackers

由于 TheLorax

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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