ASP.NET MVC的数据验证机制,比起ASP.NET WEBFORM那种高效很多。下面记录以下两个示例,以便日后方便查阅。

  方式一:在Controller里通过AddModelError方法返回错误的验证信息,看一下代码示例:

  Controller里的,注意看一下,他Add的时候提交是HTTPPOST,并且传参是传一个MODEL进来。

        public ActionResult Add()
{
return View();
} [HttpPost]
public ActionResult Add(Package.Model.Message message)
{
if (message.gName == null)
{
ModelState.AddModelError("gName", "姓名不能为空");
}
if (message.gContent == null)
{
ModelState.AddModelError("gContent", "内容不能为空");
} if (ModelState.IsValid)
{
MessageDal msgDao = new MessageDal();
msgDao.Add(message);
return View();
} return View(); } }

  View里面的

@model  Package.Model.Message
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Add</title>
</head>
<body>
<div>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<fieldset>
<legend>我要留言</legend>
<div>
留言名称:@Html.TextBoxFor(a => a.gName)
@Html.ValidationMessageFor(a => a.gName)
</div>
<div>
留言内容:@Html.TextBoxFor(a => a.gContent)
@Html.ValidationMessageFor(a => a.gContent)
</div>
<input type="submit" id="btnAdd" value="提交留言" />
</fieldset>
}
</div>
</body>
</html>

  方式二:直接在MODEL层里添加上验证

  如何把数据验证交给Model呢?这里需要引用一个DLL:System.ComponentModel.DataAnnotations

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text; namespace Package.Model
{
/// <summary>
/// Message:实体类(属性说明自动提取数据库字段的描述信息)
/// </summary> [Serializable]
public partial class Message
{
public Message()
{ }
#region Model
private int _id;
private string _gname;
private string _gcontent; public int Id
{
set { _id = value; }
get { return _id; }
} [DisplayName("姓名")]
[Required(AllowEmptyStrings = false, ErrorMessage = "姓名不能为空")]
public string gName
{
set { _gname = value; }
get { return _gname; }
} [Required(AllowEmptyStrings = false, ErrorMessage = "内容不能为空")]
public string gContent
{
set { _gcontent = value; }
get { return _gcontent; }
}
#endregion Model }
}

  更多在MODEL里验证的丰富示例:

namespace MvcApplication4.Models
{
public class UserInfo
{
//ID编号
[ScaffoldColumn(false)]
[Required(AllowEmptyStrings = false, ErrorMessage = "用户ID不能为空")]
[Display(Name = "记录编号", Order = )]
public int ID { get; set; } [Display(Order = )]
[Required(AllowEmptyStrings = false, ErrorMessage = "用户名不能为空")]
[StringLength(, MinimumLength = , ErrorMessage = "用户名不能大于{2} 且要小于{1}")]
[Remote("User", "Validate", HttpMethod = "post", ErrorMessage = "用户名已经存在")]
public string UserName { get; set; } [Display(Name="password")]
[DataType(DataType.Password)]
[Required(AllowEmptyStrings = false, ErrorMessage = "密码不能为空")]
[StringLength(, MinimumLength = , ErrorMessage = "密码必须在{2} 和{1}之间")]
public string UserPassword { get; set; } [Required(AllowEmptyStrings = false, ErrorMessage = "邮箱必填")]
[RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9]+\.[A-Za-z]{2,4}", ErrorMessage = "{0}的格式不正确")]
public string Email { get; set; } [Compare("Email", ErrorMessage = "邮箱要相同")]
public string TEmail { get; set; } //compare 大小写要相同 否则不会触发 验证 [Display(Name = "身份证号码")]
[RegularExpression(@"\d{17}[\d|x]|\d{15}", ErrorMessage = "身份证号码格式错误")]
public string IdentityNo { get; set; } [Required(AllowEmptyStrings = false, ErrorMessage = "年龄必填")]
[Range(, , ErrorMessage = "年龄不能大于{2} 不能小于{1}")]
public int Age { get; set; } [ReadOnly(true)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
[Required(ErrorMessage = "金额不能为空")]
[Range(typeof(decimal), "20.0", "30.0", ErrorMessage = "金额在{1}和{2}之间")]
public decimal Money { get; set; }
}
}

  参考文章:http://www.cnblogs.com/jiagoushi/archive/2013/01/25/2876725.html

ASP.NET MVC- 数据验证机制的更多相关文章

  1. 【MVC】ASP.NET MVC Forms验证机制

    http://www.cnblogs.com/bomo/p/3309766.html 随笔 - 121  文章 - 0  评论 - 92 [MVC]ASP.NET MVC Forms验证机制 ASP. ...

  2. 通过扩展改善ASP.NET MVC的验证机制[实现篇]

    原文:通过扩展改善ASP.NET MVC的验证机制[实现篇] 在<使用篇>中我们谈到扩展的验证编程方式,并且演示了本解决方案的三大特性:消息提供机制的分离.多语言的支持和多验证规则的支持, ...

  3. 通过扩展改善ASP.NET MVC的验证机制[使用篇]

    原文:通过扩展改善ASP.NET MVC的验证机制[使用篇] ASP.NET MVC提供一种基于元数据的验证方式是我们可以将相应的验证特性应用到作为Model实体的类型或者属性/字段上,但是这依然具有 ...

  4. 【转】ASP.NET MVC 数据验证及相关内容

    原文地址:http://www.jb51.net/article/56713.htm 一.数据验证 数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验 ...

  5. ASP.NET MVC Forms验证机制

    ASP.NET MVC 3 使用Forms身份验证 身份验证流程 一.用户登录 1.验证表单:ModelState.IsValid 2.验证用户名和密码:通过查询数据库验证 3.如果用户名和密码正确, ...

  6. asp.net mvc数据验证

    文章:asp.net mvc3 的数据验证(一) 文章:ASP.NET MVC下的四种验证编程方式 这个讲了在一个地方展示验证信息 文章:[ASP.NET MVC系列]浅谈数据注解和验证 这个在每个输 ...

  7. ASP.NET MVC Model验证(一)

    ASP.NET MVC Model验证(一) 前言 前面对于Model绑定部分作了大概的介绍,从这章开始就进入Model验证部分了,这个实际上是一个系列的Model的绑定往往都是伴随着验证的.也会在后 ...

  8. MVC 数据验证

    MVC 数据验证 前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填 ...

  9. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

    在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...

  10. MVC 数据验证[转]

    前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解. 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指 ...

随机推荐

  1. Java实现RC4加解密

    package com.vrv.paw.utils; public class RC4Util { public static String decry_RC4(byte[] data, String ...

  2. LA 4636 (贪心) Cubist Artwok

    题意: 一个由若干小正方体组成的图形,给出它的正视图和侧视图,求满足条件的最少小正方体的个数. 分析: 虽说是一道简单的贪心,可一直没有太好的思路. 又一次可耻地看了别人的题解. http://blo ...

  3. Java [Leetcode 119]Pascal's Triangle II

    题目描述: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return ...

  4. noip2003提高组题解

    这一年的前三题虽然难度不高,但是第二题极为繁琐,想在考场上用较短的时间拿到第二题的分数难上加难.所以必须要调整策略,争取拿其他三题的分数.第四题是比较普通的搜索题,分数比较好拿,但是很容易想成树形DP ...

  5. 系统性能监控之vmstat和iostat命令

    这篇文章主要介绍一些Linux性能检测相关的命令. vmstat和iostat的两个命令可以运行在主流的Linux/Unix操作系统上. 如果vmstat和iostat命令不能再你的电脑上运行,请安装 ...

  6. 【转】如何在eclipse里关联查看android源码

    原文网址:http://fengbohaishang.blog.51cto.com/5106297/1339556 以前没怎么注意过这个问题,不怎么看源码,现在发现源码确实是很好的学习资源. 直入正题 ...

  7. TCP/IP详解学习笔记(10)-TCP连接的建立与中止

    TCP是一个面向连接的协议,所以在连接双方发送数据之前,都需要首先建立一条连接.这和前面讲到的协议完全不同.前面讲的所有协议都只是发送数据而已,大多数都不关心发送的数据是不是送到,UDP尤其明显,从编 ...

  8. js基础学习第一天(关于DOM和BOM)一

    关于BOM和DOM BOM 下面一幅图很好的说明了BOM和DOM的关系 BOM提供了一些访问窗口对象的一些方法,我们可以用它来移动窗口位置,改变窗口大小,打开新窗口和关闭窗口,弹出对话框,进行导航以及 ...

  9. Android-AnimationDrawable(一)

    大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它.它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame ...

  10. ruby函数回调的实现方法

    以前一直困惑ruby不像python,c可以将函数随意传递,然后在需要的时候才去执行.其实本质原因是ruby的函数不是对象. 通过查阅资料发现可以使用如下方法: def func(a, b) puts ...