MVC客户端验证的小示例

配置客户端验证的可用性:

<configuration>
 <appSettings>
  <add key="ClientValidationEnabled" value="true"/>
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
 </appSettings>
</configuration>

MVC的客户端的验证也利用了实体上的特性标签,如下:

public class Auction
{
 [Required]
 [StringLength(50,ErrorMessage = "Title cannot be longer than 50 characters")]
 public string Title { get; set; }
 
 [Required]
 public string Description { get; set; }

[Range(1, 10000,ErrorMessage = "The auction's starting price must be at least 1")]
 public decimal StartPrice { get; set; }
 
 public decimal CurrentPrice { get; set; }
 public DateTime EndTime { get; set; }
}

被渲染出的View的代码如下:

<h2>Create Auction</h2>
@using (Html.BeginForm())
{
 @Html.ValidationSummary()
 <p>
  @Html.LabelFor(model => model.Title)
  @Html.EditorFor(model => model.Title)
  @Html.ValidationMessageFor(model => model.Title, "*")
 </p>
 <p>
  @Html.LabelFor(model => model.Description)
  @Html.EditorFor(model => model.Description)
  @Html.ValidationMessageFor(model => model.Description, "*")
 </p>
 <p>
  @Html.LabelFor(model => model.StartPrice)
  @Html.EditorFor(model => model.StartPrice)
  @Html.ValidationMessageFor(model => model.StartPrice)
 </p>
 <p>
  @Html.LabelFor(model => model.EndTime)
  @Html.EditorFor(model => model.EndTime)
  @Html.ValidationMessageFor(model => model.EndTime)
 </p>
 <p>
 <input type="submit" value="Create" />
 </p>
}

被渲染出的HTML的代码如下:

<form action="/Auctions/Create" method="post" novalidate="novalidate">
 <div class="validation-summary-errors" data-valmsg-summary="true">
  <ul>
   <li>The Description field is required.</li>
   <li>The Title field is required.</li>
   <li>Auction may not start in the past</li>
  </ul>
 </div>
 <p>
  <label for="Title">Title</label>
  <input class="input-validation-error"
    data-val="true"
    data-val-length="Title cannot be longer than 50 characters"
    data-val-length-max="50"
    data-val-required="The Title field is required."
    id="Title" name="Title" type="text" value="">
  <span class="field-validation-error"
    data-valmsg-for="Title"
    data-valmsg-replace="false">*</span>
  </p>
  <p>
   <label for="Description">Description</label>
   <input class="input-validation-error"
    data-val="true"
    data-val-required="The Description field is required."
    id="Description" name="Description" type="text" value="">
   <span class="field-validation-error"
    data-valmsg-for="Description"
    data-valmsg-replace="false">*</span>
  </p>
  <p>
   <label for="StartPrice">StartPrice</label>
   <input data-val="true"
    data-val-number="The field StartPrice must be a number."
    data-val-range="The auction's starting price must be at least 1"
    data-val-range-max="10000"
    data-val-range-min="1"
    data-val-required="The StartPrice field is required."
    id="StartPrice" name="StartPrice" type="text" value="0">
   <span class="field-validation-valid"
    data-valmsg-for="StartPrice"
    data-valmsg-replace="true"></span>
  </p>
  <p>
   <label for="EndTime">EndTime</label>
   <input data-val="true"
    data-val-date="The field EndTime must be a date."
    id="EndTime" name="EndTime" type="text" value="">
   <span class="field-validation-valid"
    data-valmsg-for="EndTime"
    data-valmsg-replace="true"></span>
  </p>
  <p>
   <input type="submit" value="Create">
  </p>
</form>

我们看见在最后生成的HTML代码中多出了很多属性,这时候我们引入两个js文件:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"type="text/javascript"</script>

这两文件会中的代码会根据那些多出的这些属性知道:
哪些input是需要验证的
验证的规则是什么
错误信息是什么
出现错误时应该怎样处理
我们称这个验证方式为隐式验证。

MVC客户端验证的小示例的更多相关文章

  1. MVC客户端验证配置

    <appSettings> <add key="ClientValidationEnabled" value="true"/> < ...

  2. asp.net mvc 客户端验证

    插件 jQuery unobtrusive Validation @Html.TextBoxFor(x=>x.UserName) [StringLength(7,MinimumLength=2, ...

  3. ASP.NET MVC 客户端验证失败后表单仍然提交问题

    客户端验证失败后表单仍然提交问题!导致页面刷新,辛辛苦苦输入的内容荡然无存. 多么奇怪的问题.按道理,验证失败,就应该显示各种错误信息,不会提交表单才对.而现在,错误信息正常显示,但页面却刷新了一遍. ...

  4. mvc 客户端验证

    @model MvcApplication1.Models.ViewClass @{ ViewBag.Title = "View2"; } @******引用这两个js实现客户端的 ...

  5. MVC客户端验证

    引用JS 注意:删除Layout里面默认引用的JQUERY,否则可能引起JS冲突. <link href="~/Content/Site.css" rel="sty ...

  6. asp.net mvc 模型验证组件——FluentValidation

    asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...

  7. Identity Server 4 - Hybrid Flow - MVC客户端身份验证

    预备知识 可能需要看一点点预备知识 OAuth 2.0 不完全简介: https://www.cnblogs.com/cgzl/p/9221488.html OpenID Connect 不完全简介: ...

  8. 小修改,让mvc的验证锦上添点花(1)

    首先,mvc的客户端验证用的是jquery.validate.js, jquery.validate本身已经提供了很好的扩展功能,通过简单点配置就可以做得更好看些. 而Microsoft通过jquer ...

  9. 小修改,让mvc的验证锦上添点花

    首先,mvc的客户端验证用的是jquery.validate.js, jquery.validate本身已经提供了很好的扩展功能,通过简单点配置就可以做得更好看些. 而Microsoft通过jquer ...

随机推荐

  1. Apache+php+mysql+phpadmin搭建

    一,准备工具. httpd-2.4.12-win32-VC9.zip php-5.4.40-Win32-VC9-x86.zip phpMyAdmin-4.2.13.2-all-languages my ...

  2. Laravel 5.1 ACL权限控制 四 之middleware

    1.创建Middleware php artisan make:middleware MustBeAnAdmin 2.实现 MustBeAnAdmin.php中的handle方法,判断登录的用户是否为 ...

  3. 深夜,用canvas画一个时钟

    深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...

  4. Nginx 之六: Nginx十万并发优化

    操作 操作 Nginx 之六: Nginx十万并发优化

  5. Nginx 之六: Nginx服务器的反向代理功能

    一:Nginx作为正向代理服务器: 1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代 ...

  6. Nginx 之一:编译安装nginx 1.8.1 及配置

    一:基介绍 官网地址www.nginx.org,nginx是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间 ...

  7. An update on OS X Code Signing(OS X代码签名)

    There has recently been updates to the OS X code signing process. These updates also affect Qt appli ...

  8. 微信红包API接口(PHP)

    根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析. 红包接口调用请求代码,所有请求参数为必填参数与文档对应: class Wxapi { private $app_id = 'w ...

  9. <转> 30 个有关 Python 的小技巧

    目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...

  10. 浙江工商大学15年校赛I题 Inversion 【归并排序求逆序对】

    Inversion Time Limit 1s Memory Limit 131072KB Judge Program Standard Ratio(Solve/Submit) 15.00%(3/20 ...