ASP.NET MVC扩充数据模型-定义数据模型的Metadata

Posted on 2018-07-12 by Wang Kepai
 
 
Rate this post

无论你是使用LINQ to SQL、Entity Framework或其他ORM技术建置基础数据模型,大部分的ORM技术都会提供部分类别(Partial Class)的扩充机制,可以让你扩充通过工具生成的这些数据模型类别,进一步提供更完整的数据服务。

定义数据模型的Metadata

数据模型的Metadata又称ModelMetadata,ModelMetadata用来定义数据模型的相关属性(Attribute),例如,显示名称、数据长度及数据格式验证等,在.NET 3.5 SP1时期,ASP.NET新增了一组System.ComponetModel.DataAnnotations命名空间的类别,到了.NET 4.0又进一步扩充这个命名空间的属性(Attribute),而ASP.NET MVC也更是利用了这个特性,让我们可以直接使用DataAnnotations机制,对ASP.NET MVC中定义的数据模型加以扩充定义。

.NET 4.0的System.ComponetModel.DataAnnotations命名空间中提供了如下的验证属性

  • StringLength:字符串字段所允许的最大长度
  • Required:必填字段
  • RegularExpression:字段属性必须符合所指定的正则表达式
  • Range:数字字段必须符合的范围
  • CustomValidation:自定义字段验证规则

以下是一个简单的会员数据模型类别演示,我们利用System.ComponetModel.DataAnnotations命名空间中定义的一些属性,为每个字段加上批注。每个会员信息都有姓名、Email以及表情图标三个字段,姓名是必填字段,所以套用了Required属性;Email比如符合正确的格式,所以利用RegularExpression属性去验证用户输入的格式:表情图标需从限定的三个图标中挑选一个,我们在数据库中以int格式做定义。因此,可以利用Range属性去验证该字段的值只能出现1~3的整数。

演示程序代码如下:

public class Member
{
[Required]
public string Name { get; set; }
[RegularExpression(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4})$"
,ErrorMessage = "请输入正确的Email格式")]
public string Email { get; set; }
[Range(1, 3, ErrorMessage = "请选择代表图标")]
public int EmotionIcon { get; set; }
}

ASP.NET MVC扩充数据模型-定义数据模型的Metadata的更多相关文章

  1. 如何在ASP.NET MVC为Action定义筛选器

    在ASP.NET MVC中,经常会用到[Required]等特性,在MVC中,同样可以为Action自定义筛选器,来描述控制器所遵守的规则. 首先,我们在ASP.NET MVC项目中定义一个TestC ...

  2. [ASP.NET MVC] 利用自定义的AuthenticationFilter实现Basic认证

    很多情况下目标Action方法都要求在一个安全上下文中被执行,这里所谓的安全上下文主要指的是当前请求者是一个经过授权的用户.授权的本质就是让用户在他许可的权限范围内做他能够做的事情,授权的前提是请求者 ...

  3. ASP.NET MVC下的四种验证编程方式

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效性,我们将针对参数的验证成为Model绑定 ...

  4. ASP.NET MVC Web API Post FromBody(Web API 如何正确 Post)

    问题场景: ASP.NET MVC Web API 定义 Post 方法,HttpClient 使用 JsonConvert.SerializeObject 传参进行调用,比如 Web Api 中定义 ...

  5. ASP.NET MVC下的四种验证编程方式【转】

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...

  6. Asp.net mvc 中View 的呈现(二)

    [toc] 上一节介绍了 Asp.net mvc 中除 ViewResult 外的所有的 ActionResult,这一节介绍 ViewResult. ViewResultBase ViewResul ...

  7. ASP.NET MVC 入门4、Controller与Action

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/04/1303672.html Controller是MVC中比較重要的一部分.差点儿全部的业 ...

  8. [引]ASP.NET MVC 4 Content Map

    本文转自:http://msdn.microsoft.com/en-us/library/gg416514(v=vs.108).aspx The Model-View-Controller (MVC) ...

  9. [转]ASP.NET MVC 2: Model Validation

    本文转自:http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx?CommentPo ...

随机推荐

  1. 基于光盘配置yum源

    #开启自动挂载服务 systemctl start autofs #设置开机自动挂载 systemctl enable autofs #光盘自动挂载路径/misc/cd       “包含repoda ...

  2. 刷题78. Subsets

    一.题目说明 题目78. Subsets,给一列整数,求所有可能的子集.题目难度是Medium! 二.我的解答 这个题目,前面做过一个类似的,相当于求闭包: 刷题22. Generate Parent ...

  3. 【spring】spring源码阅读之xml读取、bean注入(BeanFactory)

    前言 此源码其实是在4月中旬就看了,而且当初也写了一份word文档,但不打算直接把word发上来.还是跟着以前的笔记.跟踪代码边看边写吧. 其实当初看源码的理由很简单,1.才进新公司,比较有空闲.2. ...

  4. Linux-Windows10双系统安装

    在Windows10系统上搭建完深度学习环境用于无人驾驶中的目标检测后,想在Linux系统上再尝试一下.由于VMware虚拟机安装的Linux系统不支持物理硬件,所以需要一步到位安装一个双系统.本文介 ...

  5. 【33】卷积步长讲解(Strided convolutions)

    卷积步长(Strided convolutions) 卷积中的步幅是另一个构建卷积神经网络的基本操作,让我向你展示一个例子. 如果你想用3×3的过滤器卷积这个7×7的图像,和之前不同的是,我们把步幅设 ...

  6. PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)

    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一 ...

  7. 【HTML】中国天气天气插件调用

    https://cj.weather.com.cn/ 输入上面的网址自定义即可

  8. 刷题22. Generate Parentheses

    一.题目说明 这个题目是22. Generate Parentheses,简单来说,输入一个数字n,输出n对匹配的小括号. 简单考虑了一下,n=0,输出"";n=1,输出" ...

  9. app遮罩层--网赚

    css .mask{display: none; position: fixed; width: 100%; height: 100%; top:0; background: rgba(0, 0, 0 ...

  10. 第一篇 网站基础知识 第7章 Tomcat分析

    7.1 Tomcat的顶层结构及启动过程 7.1.1 Tomcat的顶层结构 Tomcat中最顶层的容器叫Server,代表整个服务器,Server中包含至少一个Service,用于具体提供服务.Se ...