程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> MVC中Model,不僅僅只是數據的傳遞者,mvcmodel數據傳遞

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

編輯:C#入門知識

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


在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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved