国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 柳州市| 铜川市| 雷山县| 望都县| 花莲县| 大姚县| 清水县| 蒙城县| 礼泉县| 呼伦贝尔市| 西青区| 襄城县| 武乡县| 扶余县| 中牟县| 淮安市| 固原市| 鄂州市| 京山县| 达日县| 郸城县| 邵阳市| 石屏县| 清河县| 宿迁市| 开封市| 澄江县| 福贡县| 万源市| 长乐市| 岳西县| 利辛县| 遵化市| 理塘县| 孝义市| 临沭县| 民乐县| 兴文县| 普定县| 临沭县| 沛县|