2011-03-04 87 views
0

爲什麼MVC仍然驗證此屬性,因爲我已經排除了它?忽略[必填]數據註釋

... 
[Required(ErrorMessage = "Please enter activation code")] 
public string ActivationCode { get; set; } 
... 

[HttpPost] 
public ViewResult CreateAccount([Bind(Exclude = "ActivationCode ")] AccountCreationViewModel m, string returnUrl) 
... 
+0

你爲什麼要排除的屬性?我看到你正在使用視圖模型。從視圖模型中排除屬性的方法根本不是定義它:-) – 2011-03-04 15:16:46

回答

1

您在這裏排除的ActivationCode不能綁定到您的視圖模型。

但是ModelBinding仍然會驗證完整的模型。

我建議創建供您使用新的視圖模型,或過濾器由史蒂夫·桑德森從綁定建議here

+0

謝謝,Swaff。我剛剛讀過Steve Sanderson的Pro ASP.NET MVC 2 Framework,他沒有提到它。 – Eduardo 2011-03-04 16:59:45

0

不知道如果這樣做完全一樣的,你有什麼,但我已經做了這樣的事情,它已經奏效。

[ValidateInput(true, Exclude="ActivationCode")] 
[HttpPost] 
public ViewResult CreateAccount(AccountCreationViewModel m, string returnUrl) 
+0

ValidateInputAttribute沒有排除成員。 – Eduardo 2011-03-04 16:54:38

+0

@Eduardo我認爲它是根據[這篇文章]在MVC3中添加的(http://naikvinay.wordpress.com/2010/11/08/validateinputattribute-changes-in-mvc3/)。你沒有提到你使用的是哪個版本。 – 2011-03-04 17:01:38

+0

@Eduardo @Stack是正確的。直到mvc3才加入它。 – 2011-03-04 17:12:05