麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

MVC中Model,不僅僅只是數據的傳遞者

2019-11-17 02:18:52
字體:
來源:轉載
供稿:網友

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色播视频网站 | sesee99| 双性精h调教灌尿打屁股的文案 | 欧美一级毛片一级毛片 | 九九热九九爱 | 国产在线欧美日韩 | 日本爽快片100色毛片视频 | 中文字幕网址 | 成人午夜精品久久久久久久蜜臀 | 久久久久久久久久久久久九 | 全视频tv | 成人资源在线观看 | 久久久入口 | 成人免费av在线 | 亚洲精品午夜视频 | 毛片免费在线视频 | 亚洲成人福利在线观看 | jizzjizzjizzjizz国产 | 涩涩操| 鲁丝一区二区二区四区 | 黄色电影免费提供 | 99精品无人区乱码在线观看 | 一级毛片在线免费观看视频 | 精品亚洲va在线va天堂资源站 | 欧美一级一区二区三区 | 日韩毛片网 | 久久亚洲第一 | 免费观看一区二区三区视频 | 美国黄色毛片女人性生活片 | 羞羞色院91精品网站 | 久久毛片免费观看 | 国产一区视频在线免费观看 | 91精品久久久久久久久久久 | 亚洲视频成人 | 国产成年人网站 | 97中文字幕第一一一页 | 一色视频| 视频国产一区二区 | 久久久www成人免费精品 | 在线视频观看一区二区 | 涩涩激情网|