我正在寻找有关asp.net mvc n层应用程序验证最佳实践的一些实用/理论信息。
我正在开发一个分为以下层的.Net应用程序:
用户界面 - > MVC3
BLL层 - >所有业务规则。通过接口与数据访问和UI层分离
DAL层 - >使用存储库模式,EF4和pocos进行数据访问
现在,我正在寻找一种漂亮,干净和透明的方式来指定我的验证规则。 以下是对此事的一些看法:
UI验证应该只负责用户输入及其有效性。 BLL验证应该处理有关应用程序业务规则的数据的有效性。
我主要关心的是如何以最有效的方式绑定BLL和UI验证。有人认为我想避免在验证集合中检查UI并手动将错误添加到ModelState。此外,我不想将ModelState传递给BLL以便在那里填充。
我会对此事有任何想法。
P.S。这个问题应该标记为讨论吗?
答案 0 :(得分:2)
您的BLL图层可能会在某些标准格式下返回验证错误,例如Dictionary<string, string>
或其他一些自定义构建类型。控制器从视图接收视图模型,因此默认模型绑定器将调用此视图模型上的验证。如果此验证接下来通过了业务规则。视图模型映射到模型并传递给服务层。如果存在业务错误,该服务将返回一组错误,这些错误可以使用控制器上的扩展方法从控制器插入ModelState
。