这是我创建新用户后的方法:验证应该在CQRS中使用MVC进行验证?
[HttpPost]
public ActionResult CreateUser(CreateUserViewModel createUserViewModel)
{
CreateSystemUserCommand createSystemUserCommand = new CreateSystemUserCommand()
{
Firstname = createUserViewModel.Forename,
Surname = createUserViewModel.Surname,
Username = createUserViewModel.Username,
Password = createUserViewModel.Password
};
CreateSystemUserCommandHandler handler = new CreateSystemUserCommandHandler();
handler.Execute(createSystemUserCommand);
return RedirectToAction("ViewUsers");
}
上有视图模型一些验证已经,必填字段等,所以UI上会有验证。
但是我想知道如何做到服务器端。
我应该创建一个方法createSystemUserCommand.Validate();
或handler.Execute()
之前,做handler.Validate()
?
我该如何将这些错误转换成ModelState?我猜CQRS没有与MVC连接,因此返回特定的模型错误是没有意义的。
有任何想法欢迎。我的直觉是做handler.Validate,因为它将验证逻辑保存在一个类中,并且感觉正确,但我愿意接受建议。
如果您使用HTTP,你将不得不在许多地方,特定的HTTP验证错误。除非你打开公共使用的处理程序,否则我会保持验证结果并将其留在接缝处(例如,在这种情况下,在handler.Execute之前)。我怀疑我会把它放在处理程序中,因为你可能对处理程序中没有意义的http请求有特定的验证逻辑。 – 2014-09-29 16:54:56