我需要使用其他操作方法中的模型對象重定向到操作。沒關係,但是當我這樣做時,我可以看到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