У меня есть приложение MVC2, которое использует шаблон MVVM.Я пытаюсь использовать аннотации данных для проверки ввода формы.
В моем ThingsController у меня есть два метода:
[HttpGet]
public ActionResult Index()
{
return View();
}
public ActionResult Details(ThingsViewModel tvm)
{
if (!ModelState.IsValid) return View(tvm);
try
{
Query q = new Query(tvm.Query);
ThingRepository repository = new ThingRepository(q);
tvm.Things = repository.All();
return View(tvm);
}
catch (Exception)
{
return View();
}
}
Мое представление Details.aspx строго типизировано для ThingsViewModel:
<%@ Page Title=""
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Config.Web.Models.ThingsViewModel>" %>
ViewModel - это класс, состоящий изIList возвращенных объектов Thing и строки Query (которая отправляется в форме) и имеет аннотацию Обязательные данные:
public class ThingsViewModel
{
public IList<Thing> Things{ get; set; }
[Required(ErrorMessage="You must enter a query")]
public string Query { get; set; }
}
Когда я запускаю это, и нажимаю кнопку отправки на форме, не вводязначение Я получаю YSOD со следующей ошибкой:
The model item passed into the dictionary is of type
'Config.Web.Models.ThingsViewModel', but this dictionary
requires a model item of type
System.Collections.Generic.IEnumerable`1[Config.Domain.Entities.Thing]'.
Как я могу получить аннотации данных для работы с ViewModel?Я не вижу, что мне не хватает или где я иду не так - виртуальная машина работала просто отлично, прежде чем я начал дурачиться с проверкой.