我正在尝试确定将“验证模型”放在何处。
我的结构目前是:
网络(参考商家和对象)
控制器
浏览
CSS
脚本
商家(引用数据和对象)
数据(引用对象)
物件
现在我的问题是在哪里放置像LogIn Model这样的验证?模型应该放在我的Web图层还是Objects图层中? - 或者我应该存储类似的验证模型吗?
提前致谢!
答案 0 :(得分:3)
模型应放在您的业务层中。视图模型应放在您的Web图层中,因为它们与视图相关联。您应该在模型和视图模型之间建立映射(为了便于执行此任务,您可以使用AutoMapper之类的工具。视图从控制器接收视图模型。验证是在这些视图模型上执行的。
所以:
网络强>
答案 1 :(得分:0)
任何需要验证的内容都应该放在您的业务层中。验证是一项业务问题,不应分散在各个层中,不应与特定的应用程序类型(Web,窗口,服务等)绑定。
如果您将域模型公开给应用程序,那么您也可以使用验证属性修饰您的实体,但请注意,如果您的域模型发生更改,那么您的应用程序就会中断。
假设您在Business层中有一个AccountService
类,它有一个Login
方法。 Login
接受LoginInput
课程并返回LoginResult
班级:
public class LoginInput {
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
public class LoginResult {
public bool Success { get; internal set; }
public string Error { get; internal set; }
}
这两个类都可以用作ViewModel,因此您不需要在Web层中创建任何ViewModel,并且您当然不应该在其中放置验证逻辑。