ASP.NET MVC編程——模型

1 ViewModel正則表達式

是一種專門提供給View使用的模型,使用ViewModel的理由是實體或領域模型所包含的屬性比View使用的多或少,這種狀況下實體或領域模型不適合View使用。編程

 

2模型綁定數組

默認模型綁定器mvc

經過DefaultModelBinder解析客戶端傳來的數據,爲控制器的操做參數列表賦值。框架

 

顯示模型綁定asp.net

使用UpdateModelTryUpdateModel顯示綁定模型,不會檢驗未綁定字段。ide

使用UpdateModel方法綁定模型時,若是綁定失敗就會拋異常,而TryUpdateModel不會。ui

 

驗證模型綁定成功與否spa

使用ModelState.IsValid.net

 

獲取表單數據

爲得到表單數據,使用類型爲FormCollection的參數做爲操做參數。

 

清空模型綁定狀態

使用ModelState.Clear();清空模型綁定狀態之後,驗證失敗的信息就不會顯示到視圖上,即便在視圖中使用@Html.ValidationSummary()方法。

 

限制默認的綁定規則

使用BindAttribute屬性修飾參數或操做。

public class MyModel { public string Filed1 { set; get; } public string Filed2 { set; get; } } public ActionResult About([Bind(Include = "Filed1")]MyModel mm) { //具體代碼
} 或 [Bind(Include = "Filed1")] public ActionResult About(MyModel mm) { //具體代碼
}

 

3 模型修飾

在模型屬性上使用一些特性,達到修飾模型屬性或驗證屬性的目的

特性名稱

描述

備註

StringLength

設置字符串容許的最大長度

 

Required

標記字段爲必填字段

 

RegularExpression

必須知足指定的正則表達式

 

Range

規定數字的範圍

 

CustomValidation

自定義驗證規則

 

DisplayName

設置字段的顯示名稱

 

Compare

比較兩個字段是否一致

可用於確認第二次輸入是否與第一次一致

MinLength

設置數組或字符串最小長度

 

MaxLength

設置數組或字符串最大長度

 

Remote

經過控制器操做驗證指定字段

public RemoteAttribute(string action, string controller);

例:

1)指定許可的範圍

public class ModelF { public string Field { get; set; } [Range(typeof(DateTime), "1/1/2018", "1/1/2019")] public DateTime Field2 { get; set; } }

2)使用佔位符

[StringLength(100, ErrorMessage = "{0} 必須至少包含 {2} 個字符。", MinimumLength = 6)] public string NewPassword { get; set; }

 

4擴展

自定義註解

建立自定義特性,繼承自ValidationAttribute,ValidationAttribute有兩個虛方法,能夠經過重載這兩個虛方法來完成自定義驗證邏輯。

public virtual bool IsValid(object value);

protected virtual ValidationResult IsValid(object value, ValidationContext validationContext);

例:

public class CustomValidationAttribute : ValidationAttribute { public CustomValidationAttribute() : base("{0} 驗證失敗的原因") { } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null) { //驗證邏輯 //驗證失敗,返回錯誤信息
                string errorMessage = FormatErrorMessage(validationContext.DisplayName); return new ValidationResult(errorMessage); } return ValidationResult.Success; } }

 

5 原理

傳入操做的數據存在於HTTP請求的請求URL,消息頭,消息體。當操做帶有參數時,MVC框架使用模型綁定器(默認的或自定義的)在Http請求中查找數據,用於構建控制器操做的參數列表。

驗證發生的時間

模型驗證是在操做執行以前完成的。當模型綁定器使用新值對模型屬性更新後,會利用當前模型元數據得到模型驗證器,模型驗證器會找到全部施加於模型屬性的特性並執行驗證邏輯,而後模型綁定器會捕獲全部失敗的驗證規則,並將它們放入模型狀態中。

模型狀態

模型狀態包含了模型綁按期間綁定的值,和模型綁按期間發生的任何錯誤。

 

參考:

1.Jess Chadwick/Todd Snyder/Hrusikesh Panda,徐雷/徐揚

譯。ASP.NET MVC4 Web編程

2.Jon Galloway/Phil Haack/Brad Wilson/K. Scott Allen,孫遠帥/鄒權譯  ASP.NET MVC4 高級編程(第四版)

3.黃保翕,ASP.NET MVC4開發指南

4.蔣金楠,ASP.NET MVC4框架揭祕

5.https://www.asp.net/mvc

 

轉載與引用請註明出處。 時間倉促,水平有限,若有不當之處,歡迎指正。
相關文章
相關標籤/搜索