Я использую PRG для очистки моих сообщений в MVCОчистка после действия в MVC
О действии POST Я хранить ModelState контроллера в TempData, используя действие фильтр, а затем перенаправить к методу GET, который перезагружает модельное состояние.
GET и POST действия заголовки:
[ImportModelStateFromTempData]
public ActionResult Details(int id) {
var object = load(id);
return View(object);
}
[HttpPost]
[ExportModelStateToTempData]
public ActionResult Details(MyViewModel model) {
update(model); return RedirectToAction("Details", new { id = model.id })
}
, если произошла ошибка ввода в действие пост добавить ошибку в ModelState которой Аннулирует ModelState, а затем перенаправляет к действию ГЭТ.
Мой вопрос в том, как лучше всего определить в действии GET «Сведения», которое было в состоянии ошибки после сообщения? Если модельное состояние было недействительным, я хочу пропустить логику ...
var object = load(id);
в действии GET. Я пробовал ModelState.IsValid, но это не работает.
Вы можете задать ModelState, если его действительным (он будет проверять себя на основе аннотаций данных): если (ModelState.IsValid!) {// сделать вещь}. Вы также можете добавить свои собственные ошибки modelstate для «специальных» валидаций: ModelState.AddModelError (yourProperty, aMessage); .. Хотя я не уверен, что я действительно понимаю ваш вопрос .. –
@ Team-JoKi Он использует фильтр действий, который импортирует TempData из запроса POST, поэтому он следует шаблону PRG. POST для действия и ModelState действителен, перетаскивает состояние модели в TempData, а затем перенаправляет на действие GET, которое затем импортирует этот ModelState, чтобы в форме были выделены правильные валидаторы и т. Д. – Dismissile
Не нужно ли просто проверять «если modelState .IsValid ... сделать перенаправление? Else просто вернуть модель к виду, на котором вы были? Вы хотите проверить достоверность перед запуском любого обновления. –