Model验证功能
占位符



[MetadataType(typeof(Login_UserMetaData))]
public partial class Login_User
{
//验证需要用到
public class Login_UserMetaData
{
[Display(Name="用户名")]
[Required(ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Resource))]
public string UserName { get; set; }
[Display(Name="密码")]
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resource))]
public string Password { get; set; }
}
}
然后控制器大概就需要这样的代码,记得action方法传进来的参数类型是类名,如果用string username这种形式,ModelState.IsValid将无效
[HttpPost]
public ActionResult Login(Login_User loginUser)
{
if (!ModelState.IsValid)
{//验证不通过返回
return View();
}
Login_User user=userManager.Login(loginUser.UserName, loginUser.Password);
if (user == null)
{//用户密码错误!
ViewBag.error = "用户名或密码错误!";
return View();
}
Session["user"] = user;
return RedirectToAction("index", "home");
}
@{
ViewBag.Title = "后台登陆";
}
@model Letter.Data.Model.Login_User
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using(Html.BeginForm()){
<div>
<label for="username">用户名:</label>
@Html.TextBoxFor(u=>u.UserName) @Html.ValidationMessage("UserName")
</div>
<div>
<label for="password">密码:</label>
@Html.PasswordFor(u=>u.Password) @Html.ValidationMessage("Password")
</div>
<div>
<input type="submit" value="登录" />@ViewBag.error
</div>
}
web.config应该有如下配置才有效

附上一个比较完整的验证
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations; namespace RegisterValidation.Models
{ public partial class User
{
[Key]
public int ID { get; set; }
[Display(Name="姓名")]
[Required(ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Resource))]
public string Name { get; set; } [Display(Name="生日")]
//[RegularExpression(@"^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$",ErrorMessageResourceName="Regular",ErrorMessageResourceType=typeof(Resource))]
[Required(ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Resource))]
public DateTime? Birthday { get; set; } [Display(Name="年龄")]
[Range(,,ErrorMessageResourceName="Range",ErrorMessageResourceType=typeof(Resource))]
public int Age { get; set; } [Display(Name="用户名")]
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resource))]
public string Username { get; set; } [Display(Name="密码")]
[Required(ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Resource))]
public string Password { get; set; } [Display(Name="邮箱")]
[Required(ErrorMessageResourceName="Required",ErrorMessageResourceType=typeof(Resource))]
[RegularExpression(@"^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$",ErrorMessageResourceName="Regular",ErrorMessageResourceType=typeof(Resource))]
public string Email { get; set; } }
public class UserDBContext : DbContext
{
public DbSet<User> Users { get; set; }
}
}
另一个部分user类,包含确认密码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations; namespace RegisterValidation.Models
{
public partial class User
{
[Display(Name="确认密码")]
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resource))]
[StringLength(,MinimumLength=,ErrorMessageResourceName="StringLength",ErrorMessageResourceType=typeof(Resource))]
[Compare("Password",ErrorMessageResourceName="Compare",ErrorMessageResourceType=typeof(Resource))]
public string PasswordConfirm { get; set; }
}
}
资源文件如下

效果如下


Model验证功能的更多相关文章
- ASP.NET MVC Model验证(五)
ASP.NET MVC Model验证(五) 前言 上篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现, 然而在MVC框架中还给我们提供了其它 ...
- ASP.NET MVC Model验证(四)
ASP.NET MVC Model验证(四) 前言 本篇主要讲解ModelValidatorProvider 和ModelValidator两种类型的自定义实现,前者是Model验证提供程序,而Mod ...
- [ASP.NET MVC 小牛之路]16 - Model 验证
上一篇博文 [ASP.NET MVC 小牛之路]15 - Model Binding 中讲了MVC在Model Binding过程中如何根据用户提交HTTP请求数据创建Model对象.在实际的项目中, ...
- Spring MVC 使用拦截器优雅地实现权限验证功能
在上一篇 SpringAOP 实现功能权限校验功能 中虽然用AOP通过抛异常,请求转发等勉强地实现了权限验证功能,但感觉不是那么完美,应该用拦截器来实现才是最佳的,因为拦截器就是用来拦截请求的,在请求 ...
- ThinkPHP表单令牌验证功能详细介绍
注:TP版本为3.1.3 在ThinkPHP框架下,两次提交同一个表单,比如提交信息后在浏览器点击后退退回上次的页面,重新点击提交按钮,就会提示“表单令牌错误”的信息. ThinkPHP新版内置了表单 ...
- ThinkPHP 类似Yii的Gii生成Model的功能。
ThinkPHP 类似Yii的Gii生成Model的功能.自动生成ThinkPhp 3.1 的基础模型.. #!/usr/bin/env php <?php /** * * THINKPHP 基 ...
- Model 验证
[ASP.NET MVC 小牛之路]16 - Model 验证 上一篇博文 [ASP.NET MVC 小牛之路]15 - Model Binding 中讲了MVC在Model Binding过程中如何 ...
- 实例:SSH结合Easyui实现Datagrid的新增功能和Validatebox的验证功能
在我前面一篇分页的基础上,新增了添加功能和添加过程中的Ajax与Validate的验证功能.其他的功能在后面的博客写来,如果对您有帮助,敬请关注. 先看一下实现的效果: (1)点击添加学生信息按键后跳 ...
- thinkPHP 表单自动验证功能
昨天晚上我们老大叫我弄表单自动验证功能,愁了半天借鉴了好多官网的知识,才出来,诶,总之分享一下我自己的成果吧! thinkphp 在Model基类为我们定义了自动验证的函数和正则表达式,我们只需要在对 ...
随机推荐
- Zero Copy I: User-Mode Perspective
By now almost everyone has heard of so-called zero-copy functionality under Linux, but I often run i ...
- shell脚本删除指定mobileprovision
由于某种原因,xcode帮我按照了几千个开发和上线证书,需要删除这部分证书: #dir="/Users/Ethan/Library/MobileDevice/Provisioning Pro ...
- 常用[js,css,jquery,html]
目录: 一.javascript事件和属性 二.jquery事件和方法 三.js 四.css 五.html 六.js操作cookies 七.插件 javascript事件和属性 事件 onblur ...
- ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘
开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行 ...
- 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库
上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...
- 使用ViewPager+Fragment实现选项卡切换效果
实现效果 本实例主要实现用ViewPage和Fragment实现选项卡切换效果,选项卡个数为3个,点击选项卡或滑动屏幕会切换Fragment并实现选项卡下方下边框条跟随移动效果. 本程序用androi ...
- 七天学会ASP.NET MVC (四)——用户授权认证问题
小编应各位的要求,快马加鞭,马不停蹄的终于:七天学会 Asp.Net MVC 第四篇出炉,在第四天的学习中,我们主要了学习如何在MVC中如何实现认证授权等问题,本节主要讲了验证错误时的错误值,客户端验 ...
- python 栈和队列(使用list实现)
5.1.1. Using Lists as Stacks The list methods make it very easy to use a list as a stack, where the ...
- Java final 关键词修饰类、方法、变量
1. final修饰类 被修饰的类不能被继承,也没有子类.假如随意创建这些类的子类,子类可能会错误的修改父类的实现细节.出于安全原因,类的实现细节不允许有任何改动.在创建对象模型的时候,确信这个类不 ...
- LINQ系列:LINQ to SQL Take/Skip
1. Take var expr = context.Products .Take(); var expr = (from p in context.Products select p) .Take( ...