在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;
}

最新文章

  1. Windows结构化异常
  2. Apple Instruments
  3. [原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存
  4. [JavaScript 随笔] 垃圾回收
  5. vijos1144(小胖守皇宫)
  6. Metro之Popup控件的使用(登录)
  7. 端口占用问题——netstat命令
  8. 第二十二章 数据访问(In .net4.5) 之 集合
  9. SQL中Merge的用法
  10. 算法:求 Huffuman树 构造费用
  11. Oracle字符函数(转换大小写,替换等)
  12. File.ReadAllText&nbsp;读取中文乱码问题
  13. webpack 多入口配置
  14. fgets的用法
  15. python全栈开发-常用模块的一些应用
  16. COMP9021 PRINCIPLES OF PROGRAMMING
  17. 2017 ACM/ICPC(西安)赛后总结
  18. docker性能测试
  19. 软件工程(五)UML
  20. Python基础语法-内置数据结构之列表

热门文章

  1. Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]
  2. xml是什么?
  3. 关于conversation generation的论文笔记
  4. Effective Modern C++翻译(3)-条款2:明白auto类型推导
  5. java 中的原始类型与原始封装类型
  6. linux配置tns
  7. 学习总结 HTML简单应用
  8. cocos2dx 内存管理机制
  9. 备份/恢复SQLSERVER数据库,SQL一步实现
  10. Linux:一台apache服务器上部署多个项目的apache配置