Asp.net mvc 从GET ActionResult到Post ActionResult保留ViewModel值的最佳方法是什么?
假设您有一个ActionResult表单和一个Post ActionResult表单,并且您有一个不需要显示在视图中的值Asp.net mvc 从GET ActionResult到Post ActionResult保留ViewModel值的最佳方法是什么?,asp.net-mvc,Asp.net Mvc,假设您有一个ActionResult表单和一个Post ActionResult表单,并且您有一个不需要显示在视图中的值 public ActionResult Form() { FormModel formModel = new FormModel(); formModel.UploadRecordID = 99; return View(formModel); } [HttpPost] public A
public ActionResult Form()
{
FormModel formModel = new FormModel();
formModel.UploadRecordID = 99;
return View(formModel);
}
[HttpPost]
public ActionResult Form(FormModel formModel)
{
long recordID = formModel.UploadRecordID;
}
保持这种价值的最佳方式是什么
一种方法是可以在视图中创建隐藏字段
@Html.HiddenFor(model => model.UploadRecordID);
这是最好的方法吗?有没有其他方法可以做到这一点,如果有,优点和缺点是什么?我认为您可以使用TempData,如:
TempData["formModel"] = formModel;
在行动后:
FormModel formModel = TempData["formModel"];
最好的是相当主观的。另一个选项是将其存储在会话中。与隐藏方法相比,这有一个优势,即用户无法操作隐藏的输入。另一方面,您可能会遇到其他问题,我个人不建议在这种情况下使用会话。一个更干净的选项是将ID保存到Get中的数据库中,并在Post中读取它(如果这是一个选项的话)。但是,如果您要在Get中生成UploadRecordID,并且不在视图中使用该值,为什么不在Post中生成它而不来回传递它呢?谢谢您的建议,同意尝试避免会话。至于UploadRecordID,为了澄清这一点,它是从url传入的,以便可以使用它获取记录并预填充一些值。但在发布后,我们需要在发布后对该记录执行其他后期处理操作。