可空数据类型的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; }

可空数据类型的jQuery验证

我遇到了同样的问题,只是关闭了下拉列表的客户端验证。您可以通过设置data-val = "false":

来取消该字段的验证。
@Html.DropDownListFor(m => m.ResourceId, 
 ((IEnumerable<SelectListItem>)ViewData["resourceLookup"]),"--Select--", new { @data_val = "false" })

这不会删除data-val-number属性,但会阻止验证。

当您设置ViewData["resourceLookup"]时,请尝试为Select选项添加-1

谢谢!