根據代碼分析特性用處
1 [DisplayName("學員名")] 2 [DataType(DataType.Text)] 3 [StringLength(4,ErrorMessage="您輸入的名字太長了~~~~")] 4 public string Name { get; set; }
①[DisplayName("學員名")]作用顯示屬性名,用法是要配合HTML用於顯示字符串的標簽一起使用的(@Html.LabelFor(s => s.Name))
效果:@Html.LabelFor(s => s.Name)在HTML代碼中的 <label>學員名</label>
如果這個屬性沒有DisplayName特性顯示效果:<label>Name</label>
②[DataType(DataType.Text)]用作屬性以什么HTML標簽顯示,用法必須和@Html.EditorFor(s => s.Name)一起使用
DataType是枚舉類型有很多的HTML標簽類型。
③MVC特性控件驗證
一、驗證准備
第一步是要在web.config里啟用客戶端驗證,這在MVC3自帶的模板項目中已經有了:
<add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
然后在被驗證的View頁面上要加入這樣兩個JavaScript,注意,他們是依賴於JQuery的:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
驗證消息的顯示有兩種,一種是ValidationSummary,它可以顯示一份驗證消息的匯總,包括從后台Action里返回的消息。
@Html.ValidationSummary()
另一種是Model中各屬性對應HTML控件的驗證消息:
@Html.ValidationMessageFor(m => m.UserName)
[Required] [Display(Name = "用戶名")] public string UserName { get; set; }

[Required] [StringLength(100, MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "密碼")] public string Password { get; set; }

[Required] [DataType(DataType.EmailAddress)] [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9._]+\.[A-Za-z]{2,4}")] [Display(Name = "電子郵件地址")] public string Email { get; set; }

[Required] [Range(13, 18)] [Display(Name="年齡")] public int Age { get; set; }

[Required] [Display(Name = "用戶名")] [Remote("CheckUserName","Account")] public string UserName { get; set; }
public JsonResult CheckUserName(string userName) { var result = userName == "admin"; return Json(result, JsonRequestBehavior.AllowGet); }


[Required(ErrorMessageResourceType=typeof(ErrorMessage),ErrorMessageResourceName="UserRequire")] [Display(Name = "用戶名")] [Remote("CheckUserName","Account", HttpMethod="POST")] public string UserName { get; set; }
而Controller中也可以直接接受Post的請求,當然你加上[Httppost]也是可以的:
//[HttpPost] public JsonResult CheckUserName(string userName) { var result = userName != "admin"; return Json(result, JsonRequestBehavior.AllowGet); }
[Required] [StringLength(100, ErrorMessage = "{0} 必須至少包含 {2} 個字符。", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "密碼")] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "確認密碼")] [Compare("Password", ErrorMessage = "密碼和確認密碼不匹配。")] public string ConfirmPassword { get; set; }
自定義錯誤信息
[Required] [StringLength(100, ErrorMessage = "請輸入{2}到{1}位的{0}。", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "密碼")] public string Password { get; set; }
三、服務端驗證
//服務器端 驗證(根據實體類屬性的 驗證特性來檢查)
if (!ModelState.IsValid)
四、特性補充
緩存頁面
①Controller 或Action上打[OutPutCache]特性即可
在Controller上加OutputCache特性時,Controller下的所有的Action都將實現此特性。如果同時Action也有此特性時,以Action為標准,Action的粒度更精細。
//[OutputCache(Duration=20,VaryByParam="id")] /// <summary> /// OutputCache特性 相當於 aspx的整頁緩存,默認為 絕對過期時間 /// </summary> /// <returns></returns> public ActionResult Index() { return View(); //Content(DateTime.Now.ToString()); }
<!---CacheProfile配置文件中設置緩存--> <caching> <outputCacheSettings> <outputCacheProfiles> <add name="exampleCacheProfile" duration="20" location="Any" enabled="true"/> </outputCacheProfiles> </outputCacheSettings> </caching> <!---CacheProfile配置文件中設置緩存end-->
允許請求報文中出現危險標簽字符
[ValidateInput(false)]//關閉 請求報文中 危險標簽字符驗證 public ActionResult Add(Models.Student stu) { if (!ModelState.IsValid) { return Content("驗證未通過~~~!"); } return View(); }