MVC中Model,不仅仅只是数据的传递者
在Model使用的时候很多人回向以前写三层架构一样使用它,将Model作为数据的传递者。
比如常见的写法
public int Id { get; set; }
public int RoleId { get; set; }
public string Name { get; set; }
public string Password { get; set; }
public string NickName { get; set; }
public string Avatar { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Qq { get; set; }
public DateTime AddTime { get; set; }
public DateTime LastLoginTime { get; set; }
public string LastLoginIp { get; set; }
public bool IsLock { get; set; }
public bool IsSuperUser { get; set; }
这种写法是最常遇到的,我见多过的代码生成器也是如此生成。很多人将model当做了数据的传递者,数据的临时区。
其实Model也可以用来验证数据,引用:using System.ComponentModel.DataAnnotations;空间
[Display(Name = "ID")]
public int Id { get; set; }
[Required(ErrorMessage = "角色ID不能为空")]
[Display(Name = "角色ID")]
public int RoleId { get; set; }
[Required(ErrorMessage = "账户名不能为空")]
[Display(Name = "账户名")]
public string Name { get; set; }
[Required(ErrorMessage = "密码不能为空")]
[Display(Name = "密码")]
public string Password { get; set; } [Display(Name = "昵称")]
public string NickName { get; set; } [Display(Name = "头像")]
[DataType(DataType.Text)]
public string Avatar { get; set; } [Display(Name = "邮箱")]
public string Email { get; set; } [Display(Name = "手机")]
public string Phone { get; set; } [Display(Name = "QQ号码")]
public string Qq { get; set; } [Display(Name = "添加时间")]
public DateTime AddTime { get; set; } [Display(Name = "最近登录时间")]
public DateTime LastLoginTime { get; set; } [Display(Name = "最近登录IP")]
public string LastLoginIp { get; set; } [Display(Name = "是否锁定")]
public bool IsLock { get; set; } [Display(Name = "是否超级管理员")]
public bool IsSuperUser { get; set; }
写过MVC的都会有所有了解,默认的项目里面就有这样的例子。
但是很多人用不好,或者不会用。在控制器里面可以这样判断模型是否验证成功ModelState.IsValid。
但是这样好不够,有时候有些字段是不需要验证的,有些又必须验证。这样 ModelState.Remove("验证的字段");就可以灵活使用了,想忽略那个就是那个。
另外附送一个取出错误的方法,返回单条错误。不必要每个都输出(我用这个取出单个错误,然后json传输给客户端)。
/// <summary>
/// 得到单条错误信息
/// </summary>
/// <param name="dic"></param>
/// <returns></returns>
public static string GetModelErros(this ModelStateDictionary dic)
{
string errors = "";
if (!dic.IsValid)
{
//获取第一个
//errors = dic.Keys.First<string>();
errors = dic.Values.First(t => t.Errors.Count > 0).Errors[0].ErrorMessage;
}
return errors;
}
MVC中Model,不仅仅只是数据的传递者的更多相关文章
- MVC5中Model层开发数据注解 EF Code First Migrations数据库迁移 C# 常用对象的的修饰符 C# 静态构造函数 MSSQL2005数据库自动备份问题(到同一个局域网上的另一台电脑上) MVC 的HTTP请求
MVC5中Model层开发数据注解 ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证( ...
- ASP.NET的MVC中Model对象字段的数…
ASP.NET的MVC中Model对象字段的常用数据说明属性: Required——该字段不允许为空. MaxLength——设置数组或字符串最大长度. StringLength——设置字符串最小和最 ...
- MVC中Model和model的区别和用户
MVC中Model和model的区别,它们应该怎么用呢? 使用@model关键字可以定义一个Action里所对应的一个模型(经常可以叫他实体类). MVC的第一个字母M是Model,承载着View层和 ...
- MVC中Model BLL层Model模型互转
MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...
- mvc中的几个数据传递
1.ViewData对象 ViewBagData是一种字典集合数据同时属于视图基类和控制器基类的属性. 实例: //控制器 public class HomeController:Controller ...
- Spring MVC中Controller如何将数据返回给页面
要实现Controller返回数据给页面,Spring MVC 提供了以下几种途径: ModelAndView:将视图和数据封装成ModelAndView对象,作为方法的返回值,数据最终会存到Http ...
- MVC中Model用法
Model:对于MVC来说,Model可不简单只是实体,它应该叫视图模型,这是我自己的理解,即视图中的数据由Model来提供,当视图的数据需要改变时,我们不用打开aspx或ascx文件,只需要修改相应 ...
- MVC5中Model层开发数据注解
ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...
- MVC中Model元数据及绑定机制
ASP.NET MVC的Model为View Model,表示最终呈现在View上的数据,而Model元数据的一个重要的作用在于控制对象在View上的呈现方式.说得更加具体点,就是基于某种数据类型的M ...
随机推荐
- python 爬取百度云资源
pan1 1 import urllib.request 2 import re 3 import random 4 5 def get_source(key): 6 7 print('请稍等,爬取中 ...
- 菜鸟-手把手教你把Acegi应用到实际项目中(1.2)
7) daoAuthenticationProvider 进行简单的基于数据库的身份验证.DaoAuthenticationProvider获取数据库中的账号密码并进行匹配,若成功则在通过用户身份的同 ...
- 向Page对象注册脚本
在madn上ClientScriptManager 类的示例: <%@ Page Language="C#"%> <!DOCTYPE html PUBLIC &q ...
- MongoDB基本操作命令
由于工作需要,笔者这两天使用了一下MongoDB.真的很不习惯!但是确实好用,命令比mysql和sqlserver简单很多.在这里整理一些MongoDB的基本操作命令分享出来. 客户端的安装就不说了, ...
- 转载收藏- (TTL与CMOS)电路常识性概念
原帖:http://blog.sina.com.cn/s/blog_48c0c0190101bbth.html
- hadoop fs管理文件权限
sudo addgroup Hadoop#添加一个hadoop组sudo usermod -a -G hadoop larry#将当前用户加入到hadoop组 修改hadoop目录的权限sudo ch ...
- 使用JAR命令打EAR包
恩,我又得了一个发布应用的活,常常使用JAR命令来打EAR包,所以下面记录一下,以免忘记! 前提条件如下: 1)我的WEB服务器是WebLogic Server (版本是: 10.3.6.0) 2)假 ...
- 学习练习 Oracle数据库小题 Students
- Android WebView与JavaScript交互操作(Demo)
应用场景: 为了使Android移动项目能够在较短的时间内完成开发,同时降低技术人员开发的成本投入,往往会采用Hybrid APP的开发模式.相关Hybrid APP(混合型应用)参看:http:// ...
- Android内存泄漏分析
周末去上海参加了安卓巴士组织的技术论坛,去了才发现自己基础很渣..... 其中提到了android的内存泄漏的问题,回来马上度娘(虽说度娘很渣),整理如下: 一.单例造成的内存泄漏 因为单例的静态特性 ...