Ma question estOù placer des annotations de validation Objet ViewModel ou Domaine?
Comme je passe UserCreateViewModel de mon Créer contrôleur qui signifie que ma validation (ModelState.IsValid) ne fonctionne que sur UserCreateViewModel si Annotation sont définis là-dessus. Mais je ne peux pas définir DataAnnotation sur chacun de mes ViewModels car ce sera beaucoup de travail. Au lieu de cela, je veux le mettre sur le modèle de domaine de l'utilisateur. Alors, comment puis-je réparer la méthode Create pour corriger mon travail d'annotation et mapper aussi sans ajouter plus de code au contrôleur.
// Mon contrôleur Créer méthode
[HttpPost]
public ActionResult Create(UserCreateViewModel user)
{
if (ModelState.IsValid)
{
var createUser = new User();
Mapper.Map(user, createUser);
_repository.Add(createUser);
return RedirectToAction("Details", new { id = createUser.UserId });
}
return View("Edit", user);
}
// UserCreateViewModel -> Créer un modèle de vue spécifique
public class UserCreateViewModel
{
public string UserName { get; set; }
public string Password { get; set; }
}
// utilisateur -> Objet de domaine
[MetadataType(typeof(User.UserValidation))]
public partial class User
{
private class UserValidation
{
[Required(ErrorMessage = "UserName is required.")]
[StringLength(50, MinimumLength = 2, ErrorMessage = "{0} is between {1} to {2}")]
[RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
public string UserName { get; set; }
[Required(ErrorMessage = "Password is required.")]
[StringLength(50, MinimumLength = 2, ErrorMessage = "{0} is between {1} to {2}")]
public string Password { get; set; }
}
}