3
です。しかし、それぞれのViewModelでDataAnnotationを定義することはできません。なぜなら、それは大変な作業になるからです。 代わりに私はそれをユーザードメインモデルに入れたいと思います。だから私はどのように私の注釈の仕事とマッパーとしてコントローラにコードを追加することなく修正する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 - >特定のビューモデルを作成します
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; }
}
}