asp.net MVc 数据验证
asp.net mvc 之asp.net mvc 3.0 新特性之Model:
通过Data Annotations 与jQuery 的结合实现服务端和客户端的双重验证
双重验证中,使客户端实现远程的异步验证
自定义Data Annotations 与jQuery,以实现自定义的双重验证
示例
1、Model 中通过Data Annotations 与jQuery 的结合实现服务端和客户端的双重验证
Web.config
<configuration>
<!--
要实现服务端和客户端的双重验证,需要做如下配置,因为双重验证中的客户端验证需要依赖此配置
-->
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
</configuration>
User.cs
/*
* 在asp.net mvc 3.0 中支持通过Data Annotations 来实现服务端和客户端的双重验证,需要jQuery 的支持
* 所有Data Annotations 相关的Attribute 直接用类视图看System.ComponentModel.DataAnnotations 就行了,详细说明以前写过好多遍了,这里就不重复了
* 另外System.Web.Mvc 下有一些新增的Data Annotations
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace MVC30.Models
{
public class User
{
public int ID { get; set; }
[DisplayName("名字")]
[Required(ErrorMessage = "名字不能为空")]
public string Name { get; set; }
[DisplayName("密码")]
[Required(ErrorMessage = "密码不能为空")]
public string Password { get; set; }
[DisplayName("确认密码")]
[Required(ErrorMessage = "确认密码不能为空")]
[Compare("Password", ErrorMessage="两次密码输入不一致")]
public string ConfirmPassword { get; set; }
public DateTime DateOfBirth { get; set; }
// 请求时,允许此字段包含HTML 标记
[AllowHtml]
public string Comment { get; set; }
}
}
ValidationDemoController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC30.Models;
namespace MVC30.Controllers
{
public class ValidationDemoController : Controller
{
// 用于演示通过Data Annotations 实现服务端和客户端的双重验证
public ActionResult Validation_DataAnnotations()
{
var user = new User { ID = 1, Name = "webabcd", DateOfBirth = new DateTime(1980, 2, 14), Comment = "<b>mvp</b>" };
return View(new User());
}
[HttpPost]
public ActionResult Validation_DataAnnotations(User user)
{
return View(user);
}
}
}
Validation_DataAnnotations.cshtml
@model MVC30.Models.User
@{
ViewBag.Title = "Validation_DataAnnotations";
}
<h2>ClientValidation</h2>
<!--
通过jQuery 实现客户端验证的逻辑,需要引用此js
-->
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<!--
服务端验证与客户端验证的一一对应需要引用此js
-->
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@*
在MVC3 中实现客户端验证,不需要添加以下代码
@{ Html.EnableClientValidation(); }
*@
@using (Html.BeginForm())
{
<fieldset>
<legend>User</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
(测试方法:空着文本框,然后提交)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
2、Model 中通过Data Annotations 与jQuery 的结合实现服务端和客户端的双重验证,其中客户端可以实现远程的异步验证
User.cs
/*
* System.Web.Mvc.Remote(string action, string controller) - 让客户端可以通过ajax 的方式远程验证
* action - 实现验证逻辑的action,即处理客户端的异步请求的action
* controller - 实现验证逻辑的controller,即处理客户端的异步请求的controller
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.C
补充:Web开发 , ASP.Net ,