MVC模型注解
首先,model是通过ef自动是生成的实体。
添加模型注解的意思就是在注册的时候自动验证用户所填信息是否符合我们规定的要求(这是我们做这个例子的要求)
首先给大家先展示一下效果吧。

然后Email是点击注册之后才能看到效果的

现在就跟我一起回忆下过程吧
实体我们就不再说了,不管你用什么方法创建,我们现在说说添加模型注解:
首先添加一个类,然后加上两个重要的命名空间的引用:
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
这里简单介绍一下MVC的常用注解:
Required:验证必填
StringLength:验证字段的最大长度
Range:验证字段范围
RegularExpression:自定义验证规则
DisplayName:字段显示名称
然后我们在我们新添加的类中写是上代码
首先要保证这个新建的类的命名空间要一致,如果你的实体类建在项目的根目录下,而你的注解类在Models文件夹下,那么就不会出现上面的效果了,我在做的时候也碰到过这样的问题
然后就是代码时间:
public class EmailAttribute : RegularExpressionAttribute
{
public EmailAttribute()
: base(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")
{
}
} [MetadataType(typeof(UserMetadata))]
public partial class Tb_User
{
public string RePwd { get; set; }
}
/// <summary>
/// 为实体类添加特性DisplayName
/// </summary>
public class UserMetadata
{
[DisplayName("用户名")]
[Remote("NotExitesUserName", "Home",ErrorMessage="用户账号已经存在")]
public string UserName { get; set; }
/// <summary>
/// 在实体类中为Remark属性设置DataType特性,指定为多行文本
/// </summary>
[DataType(DataType.MultilineText)]
[DisplayName("备注")]
public string Remark { get; set; }
[DisplayName("年龄")]
[Range(, )]
public int Age { get; set; }
[PasswordPropertyText]
[DisplayName("密码")]
public string Pwd { get; set; }
[PasswordPropertyText]
[DisplayName("重输密码")]
[System.Web.Mvc.Compare("Pwd")]
public string RePwd { get; set; }
[Email]
public string Email { get; set; } }
注解类写完,我们接下来写控制器了
添加一个HOME控制器
代码如下:
private NorthwindEntities1 db = new NorthwindEntities1();
//
// GET: /Home/
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(Tb_User model)
{
if (ModelState.IsValid)
{
db.Tb_User.Add(model);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View();
}
}
[HttpGet]
public JsonResult NotExitesUserName()
{
string UserName = Request.Params["UserName"];
var user = db.Tb_User.Where(x => x.UserName == UserName).FirstOrDefault();
return user == null ? Json(true, JsonRequestBehavior.AllowGet) : Json(false, JsonRequestBehavior.AllowGet);
}
public ActionResult Index()
{
var user = db.Tb_User.ToList();
return View(user);
}
}
这里private NorthwindEntities1 db = new NorthwindEntities1();是我的实体类的模型,用EF添加ADO.NET实体创建的
然后就是相应的添加视图
首先是Register视图:
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> <h2>@ViewBag.Title</h2>
@using(Html.BeginForm("Register",null,FormMethod.Post))
{
<table><tr><td>@Html.DisplayNameFor(x=>x.UserName):</td><td>@Html.TextBoxFor(x=>x.UserName) @Html.ValidationMessageFor(x=>x.UserName)</td></tr>
<tr><td>@Html.DisplayNameFor(x=>x.Age):</td><td>@Html.TextBoxFor(x=>x.Age)@Html.ValidationMessageFor(x=>x.Age)</td></tr>
<tr><td>@Html.DisplayNameFor(x=>x.Pwd):</td><td>@Html.PasswordFor(x=>x.Pwd)@Html.ValidationMessageFor(x=>x.Pwd)</td></tr>
<tr><td>@Html.DisplayNameFor(x=>x.RePwd):</td><td>@Html.PasswordFor(x=>x.RePwd)@Html.ValidationMessageFor(x=>x.RePwd)</td></tr>
<tr><td>@Html.DisplayNameFor(x=>x.Email):</td><td>@Html.TextBoxFor(x=>x.Email)@Html.ValidationMessageFor(x=>x.Email)</td></tr>
<tr><td>@Html.DisplayNameFor(x=>x.Remark):</td><td>@Html.TextBoxFor(x=>x.Remark)@Html.ValidationMessageFor(x=>x.Remark)</td></tr>
<tr><td colspan=""><input type="submit" value="注册"/></td></tr>
</table>
}
这里创建视图的步骤是:

其中Script可以自己拖,也可以手敲。
再添加Index视图,这里直接引用List模板

这样基本上就OK了,然后运行项目,先添加一条测试数据,然后验证就可以达到上面开头我们展示的效果了
MVC模型注解的更多相关文章
- MVC中的模型注解
authour: chenboyi updatetime: 2015-04-26 21:28:42 friendly link: 目录: 1,思维导图 2,内容解析 3,CodeSimple 1, ...
- MVC的验证(模型注解和非侵入式脚本的结合使用)
@HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客户端,后台服务器的验证,MVC统统都做了包含,即使用户 ...
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
MVC的验证(模型注解和非侵入式脚本的结合使用) @HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客 ...
- 基于spring mvc的注解DEMO完整例子
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mv ...
- Asp.Net MVC 模型验证详解-实现客户端、服务端双重验证
概要 在asp.net webform开发中经常会对用户提交输入的信息进行校验,一般为了安全起见大家都会在客户端进行Javascript(利于交互).服务端双重校验(安全).书写校验代码是一个繁琐的过 ...
- spring mvc 基于注解的使用总结
本文转自http://blog.csdn.net/lufeng20/article/details/7598801 概述 继 Spring 2.0 对 Spring MVC 进行重大升级后,Sprin ...
- ASP.NET MVC模型绑定的6个建议(转载)
ASP.NET MVC模型绑定的6个建议 发表于2011-08-03 10:25| 来源博客园| 31 条评论| 作者冠军 validationasp.netmvc.netasp 摘要:ASP.NET ...
- Spring MVC学习总结(2)——Spring MVC常用注解说明
使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02 之前在使用Struts2实现MVC的注解时,是借助struts2-convention这个插件,如今我们使 ...
- Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1
这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Fram ...
随机推荐
- mxGraph绘制流程图
代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...
- go片段代码
关于枚举类型
- 意识科学初步:David Chalmers的简单问题与困难问题
这是第一篇关于意识科学的内容.主要谈一下阅读大卫查莫斯的几篇论文的一些观点和思考. 论文作者简介(摘自wiki): David John Chalmers (born 20 April 1966) i ...
- LeetCode笔记:140. Word Break II
题目描述 给定一个非空的字符串s,一个非空的字符串list作为字典.通过在s中添加空格可以将s变为由list中的word表示的句子,要求返回所有可能组成的句子.设定list中的word不重复,且每一个 ...
- eclipse中生成的html存在中文乱码问题的解决方法
最近在做测试报告生成时遇到了个中文乱码的问题,虽然在html创建过程中设置了编码格式htmlReporter.config().setEncoding("UTF-8");但是生成的 ...
- C#转发Post请求,包括参数和文件
/// <summary> /// 转发Post请求 /// </summary> /// <param name="curRequest">要 ...
- 小程序textarea完美填坑
相信做微信小程序的码友们都被textarea这个原生组件坑过,什么placeholder位置错乱,穿透弹窗或遮罩层,ios上输入法弹起后换行输入内容遮挡,删除输入内容时内容被遮挡等等... 反正综上所 ...
- LVM学习笔记
LVM Logical Volume Manager Volume management creates a layer of abstraction over physical storage, a ...
- TCP协议学习总结(上)
在计算机领域,数据的本质无非0和1,创造0和1的固然伟大,但真正百花齐放的还是基于0和1之上的各种层次之间的组合(数据结构)所带给我们人类各种各样的可能性.例如TCP协议,我们的生活无不无时无刻的站在 ...
- 我们为什么要搞长沙.NET技术社区(三)
我们为什么要搞长沙.NET技术社区(三) 万事先从饭局开始是中华民族留下来的一个优秀的传统美德. 昨天晚餐时间,长沙 .net 技术社区的主要发起人员进行了一番小聚,同时也作为一个非正式会议,对社区发 ...