我有一个完成了几个部分的表单项目。例如。第1部分可能包含您的姓名,第2部分可能包含您的地址。后重定向 - 以长/向导样式表格获取模式
在MVC我有表示每个部件和一个模型的若干视图,以容纳所有表单数据。
我想在每个部分完成保存表单数据,并检索下一个部分保存的记录(使整个模型可在每个阶段)。
我使用后重定向消息获得,以避免“形式可以重新提交”使用前进和后退按钮浏览器的警告。
控制器代码
[HttpGet]
[Route("Form/Part/{id}")]
public ActionResult Part(int id, int? recordId)
{
var model = new MyVM();
if(recordId.HasValue) {
// get record from DB
// map record to 'model'
}
return View("Form.{id}", model);
}
[HttpPost]
[Route("Form/Part/{id}")]
public ActionResult Part(int id, MyVM model)
{
// map model to entity
// save/update entity
return RedirectToAction($"Form/Part/{id + 1}", new { recordId = recordId })
}
我的问题是如何最好地保留新创建/更新记录的ID并把它传递到下一个组成部分。
虽然经过recordId
作为routeValue
作品,当我使用浏览器的后退按钮作为查询字符串recordId
丢失它打破。
我已经考虑在会话存储这也许,但真的不希望把HttpContext
发挥,如果我没有进行测试的原因。
是否有推荐的方法来实现这种事情?任何想法,以不同的方式来跟踪当前的记录将不胜感激。
你可以考虑一个cookie(如果'id'是'null',请检查cookie的值)。而且您还可以添加当前步骤以允许用户注销并稍后返回完成(并在最后一步中将其删除) –