這是我創建新用戶後的方法:驗證應該在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