我有一個完成了幾個部分的表單項目。例如。第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的值)。而且您還可以添加當前步驟以允許用戶註銷並稍後返回完成(並在最後一步中將其刪除) –