MVC注释验证删除data-val属性

时间:2012-08-28 09:46:12

标签: asp.net-mvc asp.net-mvc-3 validation data-annotations

我有模特财产:

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 个答案:

答案 0 :(得分:6)

在列表中需要添加此项目:

  

new SelectListItem {Text = SiteResources.NotSelected,Selected = true,   值=“”} //(不是值= null)

此项目对data-val-number

有效

Application_Start中的另一种方式:

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

但显然禁用所有简单类型的隐式DataAnnotation验证。

答案 1 :(得分:0)

正如AlexC的评论所述,如果你的模型期望一个整数,那么你需要传递一个数字。您可以通过删除 ValidationFor 帮助程序来避免获取验证消息,但在类型不匹配之前, Model.IsValid 将永远不会为真。 如果要将空值绑定到控件,则可以执行此操作, Model.Regions 将是这样的

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