Asp.net MVC RedirectToAction在URL中显示参数

时间:2014-03-13 22:46:48

标签: c# asp.net-mvc

我需要使用另一个操作方法中的模型对象重定向到Action。没关系,但是当我这样做时,我可以看到URL地址栏中的所有参数。既然是付款,对我来说不合适吗?

我可以基本上传递ID,但我的模型是viewmodel,没有Key。

我该如何防止这种情况发生。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您真正​​应该做的是返回视图而不是redirect

像:

return View(viewModel);

但是如果您真的更喜欢进行重定向,可以将ViewModel放在TempData中,然后重定向到该操作:

TempData["MyViewModelFromRedirect"] = viewModel;

在重定向的操作中:

var ViewModel = (MyViewModel)TempData["MyViewModelFromRedirect"];

答案 1 :(得分:1)

重定向结果将HTTP重定向结果(302)返回给浏览器,其中包含url中的所有参数。如果您在路由值中传递模型属性,它们将被序列化为字符串。

因此,正如您所说,浏览器(在客户端)将看到所有这些参数,浏览器将向新网址发出另一个GET请求。

在这种情况下推荐的方法是在控制器上使用TempData来设置所有服务器端数据。然后重定向到新操作。

TempData["mymodel"] = myModel;
return Redirect(Url.Action("newaction", "newcontroller"));

在新的Action中,您可以从TempData

中检索模型