Я создал собственный результат просмотра, который наследуется от ViewResult.В моем контроллере я проверяю ModelState.IsValid
, а затем возвращаю свой пользовательский вид.Я нахожу, что ошибки, кажется, не делают это к представлению.Вот мой результат просмотра:
public class EnrichedViewResult<T> : ViewResult
{
public EnrichedViewResult(string viewName, T model)
{
this.ViewName = viewName;
this.ViewData.Model = model;
}
public override void ExecuteResult(ControllerContext context)
{
base.ExecuteResult(context);
}
}
И метод, который я вызываю на моем контроллере:
public EnrichedViewResult<T> EnrichedView<T>(string viewName, T model){
return new EnrichedViewResult<T>(viewName, model);
}
Когда я проверяю ControllerContext.Controller.ViewData.ModelState
в ExecuteResult
, ModelState содержит ошибки, так как яожидал.
[Обновление]
@ Андрас был на месте.Мне нужно было передать ViewData из моего контроллера, а не просто модель.Проще всего было получить свойство ViewData моего базового контроллера (так же, как то, что ASP.NET MVC использует для вспомогательных методов ViewResult. Я изменил свой пользовательский ViewResult, чтобы он принимал ViewDataDictionary и вспомогательные методы, ниже:
public EnrichedViewResult<T> EnrichedView<T>(string viewName, T model){
if (model != null) {
ViewData.Model = model;
}
return new EnrichedViewResult<T>(viewName, ViewData);
}