【问题标题】:Asp.Net MVC 2 Client validation implementation for Enterprise Library Validation Block企业库验证块的 Asp.Net MVC 2 客户端验证实现
【发布时间】:2010-04-19 11:29:18
【问题描述】:
我找到了一个very good article,关于如何在 MVC 2 中使用 EntLib 验证块进行服务器验证。
但正如那里指出的那样
EntLib 的验证应用程序块的当前设计使用复合模式;也就是说,当我们要求对一个对象进行验证时,它会返回一个包含所有要完成的验证工作的列表的验证器对象。虽然这在正常使用场景中非常方便,但不幸的副作用是我们无法“窥视”内部验证正在执行的操作,因此无法生成适当的客户端验证提示.
那么如何为 EntLib 实现客户端验证呢?有解决办法吗?
【问题讨论】:
标签:
asp.net-mvc-2
enterprise-library
validation
【解决方案2】:
阿列克谢,:-)
我有自己的验证任务实现,与 EntLib 无关,但在概念上非常相似。对于开发人员,它看起来如下所示:
ValidationFactory.AddRule<IPerson>(
x => string.IsNullOrEmpty(x.FirstName) &&
string.IsNullOrEmpty(x.LastName),
"Person should have a name", "validation set 1");
IPerson p = UnityHelper.DefaultContainer.Resolve<IPerson>();
ValidationResults res = ValidationFactory.Validate<IPerson>(p,"validation set 1");
if(!res.IsValid)
{
foreach (ValidationResult vr in res)
{
var msg= vr.Message;
var validated_instance = vr.Target;
var Validator_instance = vr.Validator;
}
}
如果您对此感兴趣,请告诉我,我会将其从我当前的项目中删除为单独的解决方案。
【讨论】:
-
实际上,我正在寻找像这里一样weblogs.asp.net/scottgu/archive/2010/01/15/…看步骤3的客户端验证。所以据我所知,用你的框架实现这样的客户端验证是不可能的,因为它太灵活了,因此您无法在 JavaScript 中生成规则来处理客户端中的验证。但是 EntLib 已经确定了验证器,这可以用 JavaScript 以与数据注释类似的方式来描述。但由于复合模式,不可能获取验证器列表来创建 JavaScript 元数据。