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

本文关键字:显示 参数 URL net MVC RedirectToAction Asp | 更新日期: 2023-09-27 17:50:05

我需要使用来自另一个操作方法的模型对象重定向到操作。这是可以的,但当我这样做,我可以看到所有的参数在URL地址栏。既然是关于付款的问题,对我来说是不是可以?

我可以通过ID来做这个但我的模型是viewmodel,没有Key。

我怎样才能避免这种情况。

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

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

:

return View(viewModel);

但是如果你真的想重定向,你可以把ViewModel放在TempData中,然后重定向到动作:

TempData["MyViewModelFromRedirect"] = viewModel;

在重定向动作中:

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

重定向结果将返回HTTP重定向结果(302)到浏览器,url中包含整个参数。如果你在routevalues中传递模型属性,它们将被序列化为字符串。

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

在这种情况下,推荐的方法是在控制器上使用TempData来设置所有服务器端数据。然后重定向到新的动作。
TempData["mymodel"] = myModel;
return Redirect(Url.Action("newaction", "newcontroller"));

在新的Action中,你可以从TempData

中检索你的模型