J'utilise viewModels pour communiquer entre mon contrôleur et ma vue. Pour obtenir la validation des modèles, j'utiliser une classe partielle comme ceci:La validation du modèle avec viewModel ne fonctionne pas
[MetadataType(typeof(EvaluationValidation))]
public partial class Evaluation
{
public class EvaluationValidation
{
[DisplayName("Title of evaluation")]
[Required(ErrorMessage="Please give a title")]
public string Title { get; set; }
}
}
DisplayName est binded pour voir sans problème, mais lorsque je tente de présenter le point de vue, je reçois cette erreur:
l'élément de modèle passé dans le dictionnaire est de type « FOOBAR.Models.Evaluation », mais ce dictionnaire a besoin d'un modèle de type élément « FOOBAR.Areas.Evaluation.ViewModels.EvaluationFormViewModel ».
Voici le code utilisé dans mon contrôleur
[HttpPost]
public ActionResult Create(FormCollection formValues)
{
Models.Evaluation data = new Models.Evaluation();
if (TryUpdateModel(data, "evaluations"))
{
this.daoe.Create(data);
return RedirectToAction("Index");
}
return View(data);
}
Et ceci est mon viewmodel
public class EvaluationFormViewModel
{
public FOOBAR.Models.Evaluation evaluations;
public SelectList selectlist_evaluationtypes { get; set; }
public SelectList selectlist_evaluationstatus { get; set; }
}
Avez-vous une idée? Merci d'avance
Je suis nouveau sur ASP.NET MVC mais d'après ce que je peux voir vous passez l'objet d'évaluation plutôt que le ViewModel dans votre vue auquel il ne s'attend pas (vue fortement typée?) –