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基类为我们定义了自动验证的函数和正则表达式,我们只需要在对 ...
随机推荐
- python网页抓取练手代码
from urllib import request import html.parser class zhuaqu(html.parser.HTMLParser): blogHtml = " ...
- CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)
事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便支持wpf的开发,同时,框架仍保留最低.net framework2.0 ...
- 一步步学习javascript基础篇(5):面向对象设计之对象继承(原型链继承)
上一篇介绍了对象创建的几种基本方式,今天我们看分析下对象的继承. 一.原型链继承 1.通过设置prototype指向“父类”的实例来实现继承. function Obj1() { this.name1 ...
- Kosaraju 算法检测有向图的强连通性
给定一个有向图 G = (V, E) ,对于任意一对顶点 u 和 v,有 u --> v 和 v --> u,亦即,顶点 u 和 v 是互相可达的,则说明该图 G 是强连通的(Strong ...
- DDD领域驱动设计之领域服务
1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...
- .NET 基础 一步步 一幕幕 [.NET 简介]
.NET 简介 .NET是 Microsoft XML Web services 平台.是微软用来实现XML,Web Services,SOA(面向服务的体系结构service-oriented ar ...
- Oracle 把秒转成时分秒格式(hh24:mm:ss);检测字符串是否是数字;字符串转换为数字
不说废话,贴代码: CREATE OR REPLACE FUNCTION to_time(sec IN NUMBER) RETURN VARCHAR2 IS /*把秒转成时分秒格式 auth lzpo ...
- selenium的安装
一.安装selenium 通过pip命令安装selenium包:(pip的安装方法:http://www.cnblogs.com/zhengyihan1216/articles/6011640.htm ...
- WCF学习之旅—WCF第二个示例(六)
第五步,创建数据服务 在“解决方案资源管理器”中,使用鼠标左键选中“SCF.WcfService”项目,然后在菜单栏上,依次选择“项目”.“添加新项”. 在“添加新项”对话框中,选择“Web”节点,然 ...
- Security4:Role 和 Permission
Grants permissions on a securable to a principal. The general concept is to GRANT <some permissi ...