博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTML5中custom data-*特性与asp.net mvc 3 表单验证
阅读量:6859 次
发布时间:2019-06-26

本文共 6345 字,大约阅读时间需要 21 分钟。

      前面一篇文章我们介绍了HTML5中custom data-*特性,在Asp.net MVC Web App中原来我们对表单有验证,需要写这个js与Jquery Validation 插件配合, 回顾一下,看下面的代码:

    LoginWithModel             

JS 通常像这样:

$(document).ready(function () {    $.validator.addMethod('Email', function (value) {        return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);    }, 'Please enter correct email.');    $("form").validate({        rules: {            UserName: { required: true },            Email: { required: true, Email: true },            Password: { required: true, range: [6, 12] },            ConfirmPassword: { required: true, equalTo: "#Password" }        }            , messages: {                UserName: { required: "Please enter UserName" },                Email: { required: "Please enter Email", Email: "Please enter corret email" },                Password: { required: "Please enter Password", range: "must be at least 6 characters long." },                ConfirmPassword: { required: "Please enter confirm password." }            }                , wrapper: "p",        errorPlacement: function (error, element) {            if (error != null) {                error.insertAfter(element);            }        }    })});
接下来我们在Asp.net MVC 3 web 中,启用Unobtrusive JavaScript来帮做验证,我们只需在Web.config设置

View, 先引用jquery.validate.unobtrusive.min.js,接着是这样的:

 

@model Mvc3App.Models.RegisterModel@{    Layout = null;}    LoginWithModel                @Html.ValidationSummary("Errors have occurred:")    @using (Html.BeginForm())    {        
@Html.LabelFor(m => m.UserName) @Html.TextBoxFor(i => i.UserName) @Html.ValidationMessageFor(i => i.UserName)
@Html.LabelFor(m => m.Email) @Html.TextBoxFor(i => i.Email) @Html.ValidationMessageFor(i => i.Email)
@Html.LabelFor(m => m.Password) @Html.PasswordFor(i => i.Password) @Html.ValidationMessageFor(i => i.Password)
@Html.LabelFor(m => m.ConfirmPassword) @Html.PasswordFor(i => i.ConfirmPassword) @Html.ValidationMessageFor(i => i.ConfirmPassword)
}

Model类, 注意上面使用是System.ComponentModel.DataAnnotations特性。

public class RegisterModel{    [Required]    [Display(Name = "User name")]    [RegularExpression("^[A-Za-z0-9]+$",ErrorMessage="Please correct format user name.")]    public string UserName { get; set; }    [Required]    [DataType(DataType.EmailAddress)]    [Display(Name = "Email address")]    [RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Please correct format Email.")]    public string Email { get; set; }    [Required]    [StringLength(12, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]    [DataType(DataType.Password)]    [Display(Name = "Password")]    public string Password { get; set; }    [DataType(DataType.Password)]    [Display(Name = "Confirm password")]    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]    public string ConfirmPassword { get; set; }}

 

这时最后render出来html,你有看到那些验证规则都出来了:

    LoginWithModel                
有注意到上面的html中,有加入相应data-*特性。这就是ASP.NET MVC 3 特性之一,注意这里必须使用BeginForm才能生成它们。最后我们能实现相同的验证效果,而我们不需要单独写JS了。别需要注意是,如果引入jquery.validate.unobtrusive相关js, 再其它地方使用  $("form").validate() 时,则不会生效。原因是jquery.validate.unobtrusive提前注册validate方法,它会与你自已定义冲突.
如果你想看看有哪个内在验证规则,可以运行下面的html:
    jQuery Validate Unobtrusive demo                    
 
 
 

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-。

你可能感兴趣的文章
vs编译obj给delphi用
查看>>
过游戏保护NP或TP的几种方法和思路
查看>>
equals和hashcode为什么要一起重写
查看>>
模态与非模态对话框的问题
查看>>
httpclient 备注 控制连接时间及多线程错误
查看>>
地对地导弹地对地导弹地对地导弹
查看>>
浏览器根对象window之performance
查看>>
让div 充满整个body
查看>>
常用排序算法
查看>>
程序员保持快乐活跃的6个好习惯(转)
查看>>
找工作的一些感悟——前端小菜的成长
查看>>
jSON Call can throw but it is not marked with try
查看>>
基于bootstrap的jQuery多级列表树插件 treeview
查看>>
node06
查看>>
笔试题[转]
查看>>
图片轮换
查看>>
PHP数据结构练习笔记--栈
查看>>
JSON对象配合jquery.tmpl.min.js插件,手动攒出一个table
查看>>
编译安装QEMU 及卸载
查看>>
关于php-fpm与nginx进程重载的坑
查看>>