Asp.net MVC源码分析--Model Validation(Client端)实现(1)(2)
来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:14 点击:次
3 : base(metadata, context, attribute) {
4 }
5
6 public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() {
7 return new[] { new ModelClientValidationRequiredRule(ErrorMessage) };
8 }
9 }
复制代码
二.如果让得到自定义Client Validaton 信息?
上面我们介绍了一些系统内置(Required)的Validation 的输出,那么我们如果需要自定义验证规则如果来输出客户端数据呢?前面我们介绍了DataAnnotationsModelValidatorProvider.GetValidators 方法里自定义的验证是通过DefaultAttributeFactory委托来构造的,让我们顺着这个代码来继续我们的思路。
1 internal static DataAnnotationsModelValidationFactory DefaultAttributeFactory =
2 (metadata, context, attribute) => new DataAnnotationsModelValidator(metadata, context, attribute);
复制代码
让我接下来看一下DataAnnotationsModelValidator.GetClientValidationRules 方法的实现,我们看到下面代码第4行,说明只有我们自定义的ValidationAtribute只有实现了IClientValidatable接口才能够输出客户端数据。
1 public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() {
2 IEnumerable<ModelClientValidationRule> results = base.GetClientValidationRules();
3
4 IClientValidatable clientValidatable = Attribute as IClientValidatable;
5 if (clientValidatable != null) {
6 results = results.Concat(clientValidatable.GetClientValidationRules(Metadata, ControllerContext));
7 }
8
9 return results;
10 }
复制代码
三.如果输出自定义Client Validaton 信息到浏览器?
以上的分析是我们得到Cient validation 的数据,那么我们怎么输出这些数据到浏览器呢?
一般我们在View 页面中的代码都是这样的:
1 <div class="editor-label">
2 Name
3 </div>
4 <div class="editor-field">
5 @Html.TextBoxFor(m => m.UserName)
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>