我需要使用其他操作方法中的模型对象重定向到操作。没关系,但是当我这样做时,我可以看到URL地址栏中的所有参数。既然是付款,那对我来说就不好了?Asp.net MVC RedirectToAction在URL中显示参数
我可以做到这一点基本通过ID,但我的模型是viewmodel,没有密钥。
我该如何防止这种情况。
我需要使用其他操作方法中的模型对象重定向到操作。没关系,但是当我这样做时,我可以看到URL地址栏中的所有参数。既然是付款,那对我来说就不好了?Asp.net MVC RedirectToAction在URL中显示参数
我可以做到这一点基本通过ID,但我的模型是viewmodel,没有密钥。
我该如何防止这种情况。
在这种情况下,你真正应该做的是返回一个视图而不是redirect
。
像:
return View(viewModel);
但如果你真的喜欢做一个重定向,你可以放置在TempData的视图模型,然后重定向到行动:
TempData["MyViewModelFromRedirect"] = viewModel;
而在你的重定向动作:
var ViewModel = (MyViewModel)TempData["MyViewModelFromRedirect"];
重定向结果会将HTTP重定向结果(302)返回给浏览器,与整个参数在URL中。如果您在路由值中传递模型属性,它们将被序列化为字符串。
因此,正如您所说浏览器(在客户端)将会看到所有这些参数,并且浏览器将向新的url发出另一个GET请求。
在这种情况下推荐的方法是在控制器上使用TempData来设置所有服务器端数据。然后重定向到新的动作。
TempData["mymodel"] = myModel;
return Redirect(Url.Action("newaction", "newcontroller"));
,并在新的行动,你可以检索的TempData
检查你的模型这个http://stackoverflow.com/questions/11209191/how-do-i-include-a-model- with-a-redirecttoaction/11209320#11209320 – Shyju