1

我有模型属性:

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)

4

2 回答 2

6

在列表中需要添加这个项目:

new SelectListItem {Text =SiteResources.NotSelected, Selected = true, Value = "" } //(not Value=null)

并且此项对 data-val-number 有效

在 Application_Start 中的另一种方式:

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

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

于 2012-08-28T10:06:36.823 回答
0

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

"--Please Select--", Value: null
"US", Value:"1",
"Asia", Value:"2"
于 2012-08-28T10:09:08.693 回答