gpt4 book ai didi

c# - 可为空数据类型的 jQuery 验证

转载 作者:行者123 更新时间:2023-12-01 02:55:16 25 4
gpt4 key购买 nike

我不确定为什么当属性可为空时会触发 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 中,我尝试设置 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; }

最佳答案

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

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

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

关于c# - 可为空数据类型的 jQuery 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24677927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com