我在ASP.NET MVC 3項目中使用Data Annotations來驗證模型。這些非常方便,但目前它們對我來說很神奇。我讀過數據註釋做而不是拋出異常。 MVC如何知道向模型狀態字典添加驗證錯誤?如果沒有發生異常,那麼由於模型驗證冒泡到MVC而無法在模型上設置屬性?我總是認爲每次屬性失敗都會引發異常,並且MVC模型綁定捕獲異常並將其添加到模型狀態字典中。數據註釋如何工作?
爲了測試這一點,我創建一個控制檯應用程序和加入的樣品類與驗證註解它:
public class MyObject
{
[StringLength(10, MinimumLength=3)]
public string Name { get; set; }
}
我然後實例化的對象,並試圖將值分配給該人的名稱屬性小於3 。屬性分配得很好,儘管註釋說字符串長度小於3是不允許的。
static void Main(string[] args)
{
MyObject mine = new MyObject();
mine.Name = "hi";
Console.WriteLine(mine.Name);
Console.ReadLine();
}
這個小程序向控制檯寫出「hi」。爲什麼?當我試圖將mine.Name
設置爲「hi」時,我期待它生氣。
我錯過了什麼?
在此先感謝。
如果我做'mine.Name.'我看不到一個名爲'ValidateProperty'的方法。 – Chev
它不在mine.name上。這可能應該是:「從屬性的set訪問器的*內*調用Validate.ValidateProperty方法...' –
Ohhhh,gotcha。ty – Chev