J'ai une application MVC2 qui utilise le modèle MVVM. J'essaie d'utiliser les annotations de données pour valider la saisie de formulaire.MVC2 DataAnnotations sur ViewModel - Je ne comprends pas l'utiliser avec le modèle MVVM
Dans mon ThingsController J'ai deux méthodes:
[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();
}
}
vue Mon Details.aspx est fortement typée au ThingsViewModel:
<%@ Page Title=""
Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<Config.Web.Models.ThingsViewModel>" %>
Le ViewModel est une classe composée d'un IList de chose de retour objets et la chaîne de requête (qui est soumise sur le formulaire) et possède l'annotation de données requises:
public class ThingsViewModel
{
public IList<Thing> Things{ get; set; }
[Required(ErrorMessage="You must enter a query")]
public string Query { get; set; }
}
Quand je lance cela, et cliquez sur le bouton d'envoi du formulaire sans entrer une valeur que je reçois un YSOD avec l'erreur suivante:
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]'.
Comment puis-je obtenir des données Annotations de travailler avec un ViewModel? Je ne peux pas voir ce qui me manque ou ce qui ne va pas - la machine virtuelle fonctionnait très bien avant que je ne commence à déblatérer avec la validation.