asp.net mvc + JqueryValidate(二)

上一篇 Asp.net MVC +JQueryValidation + AjaxForm 里简单完成了一下数据的效验

如果下载DEMO试过的朋友可能发现MyModel里定义的DataType=Url和DataType=EMailAddress的验证是没有生效的

这里来补充一下

这次就不做DEMO了,就2段代码加入一下就可以了

 

新建一个DataTypeValidator.cs

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace JqueryValidate
{
public class DataTypeValidator : DataAnnotationsModelValidator<DataTypeAttribute>
{
private readonly string message;

public DataTypeValidator(ModelMetadata metadata, ControllerContext context, DataTypeAttribute attribute)
:
base(metadata, context, attribute)
{
message = attribute.ErrorMessage;
}

public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
var rules = new List<ModelClientValidationRule>();
ModelClientValidationRule rule;
switch (Attribute.DataType)
{
case DataType.EmailAddress:
rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "email"};
rule.ValidationParameters.Add("true", "true");
rules.Add(rule);
break;
case DataType.Url:
rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "url"};
rule.ValidationParameters.Add("true", "true");
rules.Add(rule);
break;
//case DataType.Date:
// rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "date"};
// rule.ValidationParameters.Add("true", "true");
// rules.Add(rule);
// break;
//case DataType.DateTime:
// rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "date"};
// rule.ValidationParameters.Add("true", "true");
// rules.Add(rule);
// break;
}
return rules;
}
}
}

 

这里我把datetime这个注释掉了。因为jqueryvalidate的日期格式是 yyyy/mm/dd这样的,而我前台是yyyy年MM月dd日,而后台是支持这样的格式的,所以这里注释掉就让

HomeController.cs里的

 if (!ModelState.IsValid)
return JsonError(GetError(ModelState));

来返回json回传的错误吧

 

image

 

新建了上面那个继承自

DataAnnotationsModelValidator<DataTypeAttribute

的类后

还在要Global.ascx.cs的Application_Start里注册一下这个 DataAnnotationsModelValidatorProvider

 

            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataTypeAttribute), typeof(DataTypeValidator));

 

前台代码不需要修改,URL和EMAIL的前台验证就完成了。

image

image

 

这里补上DEMO:/Files/francis67/MvcDemo.rar

 

转载于:https://www.cnblogs.com/francis67/archive/2010/05/11/1732421.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值