zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    《设计原本》读书笔记01
    SQL SERVER存储过程的几种示例
    SQLSERVER2008 存储过程基本语法
    (转)C#程序开发中经常遇到的10条实用的代码
    (转)C#正则表达式Regex类的用法
    常用正则表达式
    (转)通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号
    checkbox:全选与反全选
    checkbox:获取所有已选中的值
    Quartz(任务调度)- Cron
  • 原文地址:https://www.cnblogs.com/francis67/p/1732421.html
Copyright © 2011-2022 走看看