在ASP.NET MVC中,保留ViewModel值从GET ActionResult到POST ActionResult的最佳方式是使用TempData。
TempData是一个字典对象,可以在不同的请求之间传递数据。在GET ActionResult中,将ViewModel对象存储在TempData中,然后在POST ActionResult中从TempData中获取该对象。
以下是一个示例:
GET ActionResult:
public ActionResult GetAction()
{
var viewModel = new MyViewModel();
// 存储ViewModel对象在TempData中
TempData["MyViewModel"] = viewModel;
return View(viewModel);
}
POST ActionResult:
[HttpPost]
public ActionResult PostAction(MyViewModel viewModel)
{
// 从TempData中获取ViewModel对象
var storedViewModel = TempData["MyViewModel"] as MyViewModel;
if (storedViewModel != null)
{
// 使用存储的ViewModel对象
// TODO: 执行逻辑
}
return RedirectToAction("SuccessAction");
}
通过这种方式,可以在GET和POST请求之间保留ViewModel的值。请注意,TempData只会在下一次请求期间保留值,因此在POST请求完成后,存储的ViewModel对象将被删除。