Я проверяю модель на действительность в действии.Хранилище генерирует различные исключения в зависимости от того, как проходят проверки, поэтому действие содержит инструкцию try-catch.
[AcceptVerb(HttpVerbs.Post)]
public ActionResult MyAction1(Action1Model Model)
{
if (ModelState.IsValid)
try
{
new MyModelRepository().CarryOutSomeChecks(Model);
return View("SuccessfulView")
}
catch (ValidationException)
{
Model.Result = Result.Fail;
ModelState.... <= I would like to reset the ModelState here.
}
return View(Model)
}
Модель представления содержит некоторую конфиденциальную информацию, поэтому, если проверки не пройдены, я бы хотелвернуться к представлению и удалить значения, которые были введены пользователем.
Чтобы усложнить то, что на мой взгляд, я называю, на самом деле в нем есть два частичных представления, каждый из которых показывает форму, например:
@model MyProject.MyOverallViewModel
@{
}
@{Html.RenderPartial("MyAction1Form", Model.Action1ModelInstance);}
@{Html.RenderPartial("MyAction2Form", Model.Action2ModelInstance);}
Я попытался выполнить Model = new Model () в перехвате, но, хотя модель, передаваемая в представление, является нулевой, значения, введенные в форму, сохраняются.Я предполагаю, что это из-за ModelState ... Есть ли способ сбросить это?
Я хотел бы избежать выполнения RedirectToAction, чтобы я мог сохранить результат своей проверки в моей модели при отображении представленияснова.
Есть идеи?