Validation n层asp.net mvc应用程序中的验证

Validation n层asp.net mvc应用程序中的验证,validation,asp.net-mvc-3,n-tier-architecture,Validation,Asp.net Mvc 3,N Tier Architecture,我正在寻找一些关于asp.net mvc n层应用程序验证最佳实践的实践/理论信息 我正在处理一个.Net应用程序,该应用程序分为以下几层: UI->Mvc3 BLL层->所有业务规则。通过接口与数据访问和UI层分离 DAL层->使用存储库模式、EF4和pocos进行数据访问 现在,我正在寻找一种漂亮、干净、透明的方法来指定我的验证规则。 以下是到目前为止对此事的一些看法: UI验证只应对用户输入及其有效性负责。 BLL验证应该处理与应用程序业务规则有关的数据的有效性 我主要关心的是如何以最有效

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

我正在处理一个.Net应用程序,该应用程序分为以下几层:

UI->Mvc3

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

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

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

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

我主要关心的是如何以最有效的方式绑定BLL和UI验证。我想避免的一种做法是在验证集合中进行UI检查,并向ModelState手动添加错误。此外,我不想将ModelState传递给要在其中填充的BLL

我将非常感谢您对此事的任何意见


另外,这个问题应该标记为讨论吗?

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