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. Net Core使用Lucene.Net和盘古分词器 实现全文检索

    Lucene.net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎, ...

  2. Google Chrome 退出清除浏览数据

    版本 79.0.3945.88(正式版本) (64 位) 设置-高级-隐私设置和安全性-网站设置-Cookie和网站数据-退出Chrome时清除Cookie及网站数据.

  3. LeetCode 938. 二叉搜索树的范围和

    题目链接:https://leetcode-cn.com/problems/range-sum-of-bst/ 给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和. 二叉搜 ...

  4. python里的复数complex

    复数是一个数学概念,包含了实部和虚部.在python设计语言中,可以直接定义以j为单位,也可以使用complex函数创建复数,这个函数可以传实部和虚部,也可以只传实部. 我们把形如z=a+bj(a,b ...

  5. Codeforces 1304E. 1-Trees and Queries 代码(LCA 树上两点距离判奇偶)

    https://codeforces.com/contest/1304/problem/E #include<bits/stdc++.h> using namespace std; typ ...

  6. mysql空数据的处理

    1.统计分析时,统计值为null则转为0 //统计婚姻接口调用次数select count ,(zsj/count) as pjdysjfrom(-- 实时调用量 评论返回时间差(取平均值)selec ...

  7. docker镜像ubuntu封装jdk1.8.0【dockerfile】

    github地址:https://github.com/laileman/Docker/Dockerfile/ubuntu-jdk1.8.0_172 1-目录结构 2- dockerfile内容 3- ...

  8. 快速搭建一个基于react的项目

    最近在学习react,快速搭建一个基于react的项目 1.创建一个放项目文件夹,用编辑器打开 2.打开集成终端输入命令: npm install -g create-react-app 3. cre ...

  9. [CF1034A] Two Rabbits - 数学

    判断能否整除即可 #include <bits/stdc++.h> using namespace std; int x,y,a,b; int main() { int t; ios::s ...

  10. 多项式乘法逆元 - NTT

    递归求解即可 #include <bits/stdc++.h> using namespace std; #define int long long namespace NTT { #de ...