ビュー モデルを構築するときは、CQRS モデルに従う傾向があります。すべてのレンダリングはViewModel
クラスで行われ、すべてのポストバックはクラスで行われCommand
ます。これは不自然な例です。ユーザーを作成するための小さなフォームを持つビューがあるとします。
ViewModel
andクラスは次のCommand
ようになります。
public abstract class ViewModel {}
public abstract class Command: ViewModel
public class CreateUserViewModel : ViewModel
{
public string Username { get; set; }
public string Password { get; set; }
public string PasswordConfirm { get; set; }
}
public class CreateUserCommand : Command
{
public string Username { get; set; }
public string Password { get; set; }
public string PasswordConfirm { get; set; }
}
は、リクエストのモデルとしてUserController
を作成し、リクエストに対してを期待します。CreateUserViewModel
Get
CreateUserCommand
Post
public ActionResult CreateUser()
{
// this should be created by a factory of some sort that is injected in
var model = new CreateUserViewModel();
return View(model);
}
[HttpPost]
public ActionResult CreateUser(CreateUserCommand command)
{
// validate and then save the user, create new CreateUserViewModel and re-display the view if validation fails
}
Get ViewCreateUserCommand
がCreateUserViewModel
.