Мне нужна функция, которая похожа на старый помощник ввода Laravel, но в MVC 5.
https://laravel.com/docs/5.6/requests#old-input
Если проверка не пройдена, мне нужно перезагрузить все данные моей модели, как это было в предыдущем запросе, кроме тех входов, где пользователь ввел что-то неправильное.
Проблема в том, что в моей форме есть много отключенных входов и полей, которые программа выбирает в методе [HttpGet], и они теряются во время отправки. Поэтому мне нужно хранить их в сессии.
Кажется, что приведенный ниже код работает, но есть ли более эффективный и красивый способ сделать это с меньшим количеством кода в каждом контроллере?
[HttpGet]
[Route(@"TaskManagement/Edit/{guid}")]
public async Task<ActionResult> Edit(Guid guid)
{
var model = new EditTaskViewModel();
model.Guid = guid;
await model.GetTaskFromRemoteService(new UserInfo(User));
ControllerHelpers.DisplayAlerts(model, this);
TempData["OldModel"] = model;
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
[Route(@"TaskManagement/Edit/{guid}")]
public async Task<ActionResult> Edit(EditTaskViewModel model, Guid guid, string submit)
{
model.Guid = guid;
if (ModelState.IsValid) {
await model.UpdateTaskInRemoteService(new UserInfo(User), submit);
ControllerHelpers.DisplayAlerts(model, this, "Task successfully updated");
if (model.ErrorCode == null)
return RedirectToAction("Edit", new { guid = model.Guid });
return RedirectToAction("Index");
}
if (TempData["OldModel"] != null) {
model = (EditTaskViewModel)TempData["OldModel"];
}
return View(model);
}