可空数据类型的jQuery验证
本文关键字:jQuery 验证 数据类型 | 更新日期: 2023-09-27 18:12:24
我不知道为什么jquery验证火灾时,属性是可空的int?
和没有标记任何数据注释属性。它的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中,我尝试设置addimplicitrequiredatattributeforvaluetypes属性以防止将data-*属性添加到不需要的字段。但顾名思义,它可以防止只添加数据所需的*属性。
protected void Application_Start()
{
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes=false;
}
我如何防止数据类型检查属性(data-val-number)在这里?
编辑:尝试设置数据类型也没有用,仍然有同样的问题。看起来这不会适用于<select>
,可能只适用于<input>
并设置type="text"
[DataType(DataType.Text)]
public int? ResourceId { get; set; }
我遇到了同样的问题,只是关闭了下拉列表的客户端验证。您可以通过设置data-val = "false":
来取消该字段的验证。@Html.DropDownListFor(m => m.ResourceId,
((IEnumerable<SelectListItem>)ViewData["resourceLookup"]),"--Select--", new { @data_val = "false" })
这不会删除data-val-number属性,但会阻止验证。
当您设置ViewData["resourceLookup"]
时,请尝试为Select
选项添加-1
。
谢谢!