【问题标题】:jQuery validation for nullable data type可空数据类型的 jQuery 验证
【发布时间】: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 也没有用,仍然有同样的问题。看起来这不适用于&lt;select&gt;,可能仅适用于&lt;input&gt;并设置type="text"

    [DataType(DataType.Text)]
    public int? ResourceId { get; set; }

【问题讨论】:

    标签: c# jquery asp.net-mvc jquery-validate unobtrusive-validation


    【解决方案1】:

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

    @Html.DropDownListFor(m => m.ResourceId, 
     ((IEnumerable<SelectListItem>)ViewData["resourceLookup"]),"--Select--", new { @data_val = "false" })
    

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

    【讨论】:

      【解决方案2】:

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

      谢谢!

      【讨论】:

      • 没有。我期待 null 或有效数字。创建存储过程是为了处理 NULL/有效 id,许多 JOINS 都基于此。我不想为这个简单的验证对整个系统进行更改。
      • 能否请教一下 jQuery 和 jQuery 验证版本是什么?
      • 它与 jQuery 和验证版本无关。关于防止为 int 生成 data-val-number 属性的 asp.net mvc 验证属性?它应该接受空字符串或整数值。截至目前,它不接受空字符串。
      • 您已经提到,当您没有设置选择框值时,您会收到验证错误消息。我尝试使用示例应用程序,但它没有为我提供 int 的验证错误?场地。我想用你的版本进行测试。
      • 检查&lt;option value=""&gt;--select--&lt;/option&gt;.. 您可以在此处粘贴为您的示例下拉列表生成的 html 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      • 2019-01-23
      • 2012-04-29
      相关资源
      最近更新 更多