MVC模型注解

首先,model是通过ef自动是生成的实体。

添加模型注解的意思就是在注册的时候自动验证用户所填信息是否符合我们规定的要求(这是我们做这个例子的要求)

首先给大家先展示一下效果吧。

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

现在就跟我一起回忆下过程吧

实体我们就不再说了,不管你用什么方法创建,我们现在说说添加模型注解:

首先添加一个类,然后加上两个重要的命名空间的引用:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

这里简单介绍一下MVC的常用注解:

Required:验证必填

StringLength:验证字段的最大长度

Range:验证字段范围

RegularExpression:自定义验证规则

DisplayName:字段显示名称

然后我们在我们新添加的类中写是上代码

首先要保证这个新建的类的命名空间要一致,如果你的实体类建在项目的根目录下,而你的注解类在Models文件夹下,那么就不会出现上面的效果了,我在做的时候也碰到过这样的问题

然后就是代码时间:

 1 public class EmailAttribute : RegularExpressionAttribute
 2     {
 3         public EmailAttribute()
 4             : base(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")
 5         {
 6         }
 7     }
 8
 9     [MetadataType(typeof(UserMetadata))]
10     public partial class Tb_User
11     {
12         public string RePwd { get; set; }
13     }
14     /// <summary>
15     /// 为实体类添加特性DisplayName
16     /// </summary>
17     public class UserMetadata
18     {
19         [DisplayName("用户名")]
20         [Remote("NotExitesUserName", "Home",ErrorMessage="用户账号已经存在")]
21         public string UserName { get; set; }
22         /// <summary>
23         /// 在实体类中为Remark属性设置DataType特性,指定为多行文本
24         /// </summary>
25         [DataType(DataType.MultilineText)]
26         [DisplayName("备注")]
27         public string Remark { get; set; }
28         [DisplayName("年龄")]
29         [Range(1, 120)]
30         public int Age { get; set; }
31         [PasswordPropertyText]
32         [DisplayName("密码")]
33         public string Pwd { get; set; }
34         [PasswordPropertyText]
35         [DisplayName("重输密码")]
36         [System.Web.Mvc.Compare("Pwd")]
37         public string RePwd { get; set; }
38         [Email]
39         public string Email { get; set; }
40
41
42     }

注解类写完,我们接下来写控制器了

添加一个HOME控制器

代码如下:

 1  private NorthwindEntities1 db = new NorthwindEntities1();
 2
 3         //
 4         // GET: /Home/
 5         public ActionResult Register()
 6         {
 7             return View();
 8         }
 9         [HttpPost]
10         public ActionResult Register(Tb_User model)
11         {
12             if (ModelState.IsValid)
13             {
14                 db.Tb_User.Add(model);
15                 db.SaveChanges();
16                 return RedirectToAction("Index");
17             }
18             else
19             {
20                 return View();
21             }
22         }
23         [HttpGet]
24         public JsonResult NotExitesUserName()
25         {
26             string UserName = Request.Params["UserName"];
27
28             var user = db.Tb_User.Where(x => x.UserName == UserName).FirstOrDefault();
29             return user == null ? Json(true, JsonRequestBehavior.AllowGet) : Json(false, JsonRequestBehavior.AllowGet);
30         }
31         public ActionResult Index()
32         {
33             var user = db.Tb_User.ToList();
34             return View(user);
35         }
36     }

这里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="2"><input type="submit" value="注册"/></td></tr>
</table>
}

这里创建视图的步骤是:

其中Script可以自己拖,也可以手敲。

再添加Index视图,这里直接引用List模板

这样基本上就OK了,然后运行项目,先添加一条测试数据,然后验证就可以达到上面开头我们展示的效果了

时间: 2024-10-11 00:19:12

MVC模型注解的相关文章

MVC 模型注解验证

首先建一个空的解决方案 然后建 Visual C# / Web / ASP.NET MVC 4 Web 应用程序 然后在 MVC 的 Models 文件夹里 建一个类 例如 UserInfo 引用命名空间 using System.ComponentModel; using System.ComponentModel.DataAnnotations; 类里面代码: [DisplayName("用户名"), Required(ErrorMessage = "用户名非空"

MVC中的模型注解

authour: chenboyi updatetime: 2015-04-26 21:28:42 friendly link:   目录: 1,思维导图 2,内容解析 3,CodeSimple 1,思维导图 2,内容解析 //模型注解 2.1.DisplayName(“程序员自定义文字”)配合 @Html.EditorForModel(),  @Html.DisplayNameFor(),               @Html.LabelFor(),@Html.ValidationMessa

MVC的验证(模型注解和非侵入式脚本的结合使用)

@HtmlHrlper方式创建的标签,会自动生成一些属性,其中一些属性就是关于验证 如图示例: 模型注解 通过模型注解后,MVC的验证,包括前台客户端,后台服务器的验证,MVC统统都做了包含,即使用户在客户端禁用Javascript,服务器也会将非法操作进行验证,当前前提是针对Model实体标识了注解的情况. 要能够正常进行非空等合法性验证必须做如下步骤(前提条件): 1.必须在实体的每个类型上加上Required特性,但是数字型的属性默认已经加上了. 2.必须在视图上导入如下脚本: <scri

基于spring mvc的注解DEMO完整例子

弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件.本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上.下面开始贴代码. 文中用的框架版本:spring 3,hibernate 3,没有的,自己上网下. web.xml配置: <?xml version="1.0" encoding="UTF-8"?> 

ASP.NET MVC 的注解

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.ComponentModel.DataAnnotations;using System.Web.Mvc; namespace 注解的应用.Models{ public class User { [HiddenInput(DisplayValue = false)] //[ScaffoldColumn(false

spring mvc 方法注解拦截器

应用场景,在方法级别对本次调用进行鉴权,如api接口中有个用户唯一标示accessToken,对于有accessToken的每次请求可以在方法加一个拦截器,获得本次请求的用户,存放到request或者session域. python中,之前在python flask中可以使用装饰器来对方法进行预处理,进行权限处理 先看一个实例,使用@access_required拦截: @api.route('/post_apply') @access_required def apply():     "&q

MVC模型

当客户端提交请求至服务端时,Struts2的FileterDispatcher(核心控制器)会负责拦截,并且内置拦截器会负责对请求中的参数做一系列的预处理工作(包含:解析参数.类型转换.DTO封装等).然后提交给具体的Action(业务控制器)调用业务实现直至返回处理结果,最后Action根据处理结果forward到具体的View层组件. 一.MVC模型介绍 MVC(Model.View.Controller)是在程序开发过程中衍生出的一套程序设计思想,它由三个单词的缩写组成,分别为:模型层(M

CI 搭建简单的MVC模型示例

1.下载CI框架源码 http://codeigniter.org.cn/download 2.我们主要的开发在application 文件夹进行,可以自己根据项目重命名文件夹.(例如公司名称_application,公司名称_system) 3.application->config 里面可以配置相关的内容(以后慢慢添加),数据库的连接配置在database.php 文件夹, $db['default']['hostname'] = 'localhost'; $db['default']['u

MVC 模型、视图、控制器

所谓模型,就是在MVC设计模式中需要被显示的数据.在通常情况下,该模型需要从数据库中读取数据.保存模型的状态等,提供数据的访问方法及数据维护. 例如,对于SQL Server中数据库NorthWind的表Products来说,一个Product对象就是一个模型,该对象需要读取数据库中的信息,并对该数据表进行查询.添加.修改等操作.对于一个比较小型的应用程序而言,模型也许只是概念上的,假如一个应用程序需要读取数据,然后显示在用户界面上,而在该应用程序中并不存在一个物理上的数据模型或者相关的类,那么