我有模特财产:
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)
答案 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"