在n层asp.net mvc应用程序中进行验证

时间:2010-12-30 21:55:01

标签: validation asp.net-mvc-3 n-tier-architecture

我正在寻找有关asp.net mvc n层应用程序验证最佳实践的一些实用/理论信息。

我正在开发一个分为以下层的.Net应用程序:

用户界面 - > MVC3

BLL层 - >所有业务规则。通过接口与数据访问和UI层分离

DAL层 - >使用存储库模式,EF4和pocos进行数据访问

现在,我正在寻找一种漂亮,干净和透明的方式来指定我的验证规则。 以下是对此事的一些看法:

UI验证应该只负责用户输入及其有效性。 BLL验证应该处理有关应用程序业务规则的数据的有效性。

我主要关心的是如何以最有效的方式绑定BLL和UI验证。有人认为我想避免在验证集合中检查UI并手动将错误添加到ModelState。此外,我不想将ModelState传递给BLL以便在那里填充。

我会对此事有任何想法。

P.S。这个问题应该标记为讨论吗?

1 个答案:

答案 0 :(得分:2)

您的BLL图层可能会在某些标准格式下返回验证错误,例如Dictionary<string, string>或其他一些自定义构建类型。控制器从视图接收视图模型,因此默认模型绑定器将调用此视图模型上的验证。如果此验证接下来通过了业务规则。视图模型映射到模型并传递给服务层。如果存在业务错误,该服务将返回一组错误,这些错误可以使用控制器上的扩展方法从控制器插入ModelState