Мой вопрос
Поскольку я передаю UserCreateViewModel из моего контроллера создания, это означает, что моя проверка (ModelState.IsValid) будет работать только на UserCreateViewModel, если комментарииопределено на нем.Но я не могу определить DataAnnotation для каждого из моих ViewModels, потому что это будет много работы.Вместо этого я хочу поставить его на модель домена пользователя.Итак, как мне исправить метод Create, чтобы он исправлялся как моя работа с аннотациями, так и без отображения кода в контроллер.
// Мой метод создания контроллера
[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 -> CreateСпециальная модель представления
public class UserCreateViewModel
{
public string UserName { get; set; }
public string Password { get; set; }
}
// Пользователь -> Доменный объект
[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; }
}
}