我不确定为什么当属性可以为空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; }
答案 0 :(得分:5)
我遇到了同样的问题,只是为我的下拉列表关闭了客户端验证。 您可以通过设置data-val =“false”来停用此字段的验证:
@Html.DropDownListFor(m => m.ResourceId,
((IEnumerable<SelectListItem>)ViewData["resourceLookup"]),"--Select--", new { @data_val = "false" })
这不会删除data-val-number属性,但会阻止验证。
答案 1 :(得分:0)
设置ViewData["resourceLookup"]
时,请尝试为选项-1
添加Select
。
谢谢!