国产探花免费观看_亚洲丰满少妇自慰呻吟_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;        }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴马| 宜丰县| 徐州市| 达日县| 林芝县| 金寨县| 延庆县| 瑞昌市| 涞源县| 白水县| 安陆市| 莆田市| 武城县| 漳浦县| 湘乡市| 荆州市| 法库县| 岳普湖县| 东丰县| 丰都县| 闸北区| 娱乐| 罗田县| 兴文县| 从化市| 犍为县| 五原县| 锡林郭勒盟| 望都县| 柞水县| SHOW| 通许县| 北宁市| 灵丘县| 彝良县| 邳州市| 蓬莱市| 连州市| 平江县| 青田县| 当涂县|