【发布时间】:2014-07-10 13:32:48
【问题描述】:
我不确定为什么当属性可以为空int? 并且未标记任何数据注释属性时会触发 jquery 验证。它的 asp.net MVC 4 应用程序
public class MyViewModel{
public int? ResourceId { get; set; }
}
MyView.cshtml
@model MyViewModel
@Html.DropDownListFor(m => m.ResourceId,
((IEnumerable<SelectListItem>)ViewData["resourceLookup"]),"--Select--")
生成的 HTML
<select data-val="true" data-val-number="The field ResourceId must be a number."
id="ResourceId" name="ResourceId">
<option value="">--Select--</option>
<option value="1">Type 1</option>
</select>
此选择框是可选的。用户可以忽略它。但是当他们忽略我收到错误消息The field ResourceId must be a number.
在 Global.asax.cs 中,我尝试设置 AddImplicitRequiredAttributeForValueTypes 属性以防止将 data-* 属性添加到不需要的字段。但顾名思义,它只能阻止添加 data-required-* 属性。
protected void Application_Start()
{
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes=false;
}
这里如何防止数据类型检查属性(data-val-number)?
编辑:
尝试设置 DataType 也没有用,仍然有同样的问题。看起来这不适用于<select>,可能仅适用于<input>并设置type="text"
[DataType(DataType.Text)]
public int? ResourceId { get; set; }
【问题讨论】:
标签: c# jquery asp.net-mvc jquery-validate unobtrusive-validation