2012-08-28 36 views
1

我有模型屬性:MVC註釋確認刪除數據-VAL屬性

public int? RegionId { get; set; } 

我在視圖中創建下拉列表:

@Html.DropDownListFor(m => m.RegionId, Model.Regions) 

在HTML:

<select data-val="true" data-val-number="The field RegionId must be a number." 
</select> 

我需要刪除屬性data-val-number,因爲在特定情況下它不適合我。

我嘗試的Application_Start:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

還要注意RegionId可爲空。

如何在服務器端代碼中刪除此屬性? (JavaScript不)

+2

什麼打算把在RegionId財產?它是一個整數,所以你不能將一個非數字值放入它。 – AlexC

+0

我希望能夠放入RegionId空值。 – DeeRain

+0

*您是否需要*屬性*區域ID *? – VJAI

回答

6

在列表需要添加此項目:

新SelectListItem {文本= SiteResources.NotSelected,選擇= TRUE, 值= 「」} //(不是價值= NULL)

,而且此項目將有效數據-VAL-數

另一種方式的Application_Start:

ModelValidatorProviders.Providers.Clear(); 
ModelValidatorProviders.Providers.Add(new DataAnnotationsModelValidatorProvider()); 

但顯然禁用所有簡單類型的隱式DataAnnotation驗證。

0

正如AlexC在評論中所說,如果您的模型期望一個整數,那麼您需要傳遞一個數字。您可以通過刪除ValidationFor助手來避免獲取驗證消息,但在類型不匹配之前,Model.IsValid永遠不會成立。 如果你想爲空值綁定到控件,你可以做到這一點,你Model.Regions會是這樣的

"--Please Select--", Value: null 
"US", Value:"1", 
"Asia", Value:"2" 
+0

在Model.Regions我把:新SelectListItem {文本= SiteResources.NotSelected,選定=真,值=空}。但是當我在頁面中選擇這個項目時,看到「字段RegionId必須是一個數字。」 – DeeRain

+0

new SelectListItem {Text = SiteResources.NotSelected,Selected = true,Value =「」}已驗證!好! – DeeRain