MVC客户端验证的小示例
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客户端验证的小示例的更多相关文章
- MVC客户端验证配置
<appSettings> <add key="ClientValidationEnabled" value="true"/> < ...
- asp.net mvc 客户端验证
插件 jQuery unobtrusive Validation @Html.TextBoxFor(x=>x.UserName) [StringLength(7,MinimumLength=2, ...
- ASP.NET MVC 客户端验证失败后表单仍然提交问题
客户端验证失败后表单仍然提交问题!导致页面刷新,辛辛苦苦输入的内容荡然无存. 多么奇怪的问题.按道理,验证失败,就应该显示各种错误信息,不会提交表单才对.而现在,错误信息正常显示,但页面却刷新了一遍. ...
- mvc 客户端验证
@model MvcApplication1.Models.ViewClass @{ ViewBag.Title = "View2"; } @******引用这两个js实现客户端的 ...
- MVC客户端验证
引用JS 注意:删除Layout里面默认引用的JQUERY,否则可能引起JS冲突. <link href="~/Content/Site.css" rel="sty ...
- asp.net mvc 模型验证组件——FluentValidation
asp.net mvc 模型验证组件——FluentValidation 示例 using FluentValidation; public class CustomerValidator: Abst ...
- Identity Server 4 - Hybrid Flow - MVC客户端身份验证
预备知识 可能需要看一点点预备知识 OAuth 2.0 不完全简介: https://www.cnblogs.com/cgzl/p/9221488.html OpenID Connect 不完全简介: ...
- 小修改,让mvc的验证锦上添点花(1)
首先,mvc的客户端验证用的是jquery.validate.js, jquery.validate本身已经提供了很好的扩展功能,通过简单点配置就可以做得更好看些. 而Microsoft通过jquer ...
- 小修改,让mvc的验证锦上添点花
首先,mvc的客户端验证用的是jquery.validate.js, jquery.validate本身已经提供了很好的扩展功能,通过简单点配置就可以做得更好看些. 而Microsoft通过jquer ...
随机推荐
- 数据层使用DBHelper.dll来减少工作量
目前在需求确定了以后进行开发的步骤一般是这样的:建立数据表,建立model,构建数据操作层,最后在页面中进行调用.关于数据操作层,因为大量的操作都集中在增加.更新.删除等简易操作,而我之前的写法是每次 ...
- Android——用户登陆及用户名和密码的保存
Android——用户登陆及用户名和密码的保存 在之前的学习过程中已经将Android学习完了,但是在后面将近一年的时间里都没有进行过Android开发,所以对Android的所有的知识点又有点忘 ...
- CentOS6.5安装elasticsearch+logstash+kibana
首先卸载低版本的java环境,然后安装 java环境和Apache服务 yum install -y java--openjdk httpd 安装ES环境 elasticsearch wget htt ...
- php重定向页面的三种方式
PHP页面跳转一.header()函数 header()函数是PHP中进行页面跳转的一种十分简单的方法.header()函数的主要功能是将HTTP协议标头(header)输出到浏览器. header( ...
- unity3d大型手游 可以打包obb文件
用unity3d开发手游,有个很大的问题就是apk的size太大, 如果超过50M,一般很多平台就不会肯上线. 一个好的方法是把app打成apk + obb数据包的方式. 1. 编译成obb数据包的方 ...
- Spark源码阅读@ListenerBus 的实现
- c++隐藏实例
隐藏:是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同.此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆). 很简单略去 ...
- arduino电子琴(2015-11-04)
前言 这是论坛上一个坛友问的问题,想做一个可变音调的电子琴,想着正好练练手,就顺手做一下. 接线图
- Cesium 获取当前视图范围
Cesium作为一个开源的WebGlobe解决方案已经很牛了,不过因为开发的资料不多,很多功能不知道怎么实现.下面记录下自己获取Cesium当前场景范围的方法(2维中对应的是extent). exte ...
- 设计模式(八)装饰器模式Decorator(结构型)
设计模式(八)装饰器模式Decorator(结构型) 1. 概述 若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性.如果已经存在的一个类缺少某些方法 ...