2012-08-28 105 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