如何使用 jQuery 不显眼的验证从表单字段中删除 'required' 设置

How to remove 'required' setting from form field using jQuery unobtrusive validation

我在从使用 jQuery 验证且 jQuery 不显眼的表单字段中删除 'required' 字段验证时遇到一些问题。

我有以下剃须刀视图 -

    <div class="form-group @Html.Raw(Html.HasError(x => x.TargetNumber) ? "has-error" : null)">
        <div class="col-md-12">
            <p><strong>How much will you raise</strong></p>
        </div>
        <div class="col-sm-6">
            @Html.TextBoxFor(x => x.TargetNumber, new { id = "TargetNumber", @class = "form-control", placeholder = "Target", type = "number", Value="Target" })
            @Html.ValidationMessageFor(x => x.TargetNumber, null, new { @class = "error" })
        </div>
    </div>

并查看模型

    [Required(ErrorMessage = "Please enter a valid value.")]
    [Range(100, Double.PositiveInfinity, ErrorMessage = "The minimum amount for this event is £100")]
    public double TargetNumber { get; set; }

我尝试了以下方法使该字段成为非必填字段 -

然而,该字段在提交时仍被标记为必填项。

任何人都可以建议我可以使该字段成为非必填字段的方法。

谢谢,

对于结构,RequiredAttribute 仅更改错误消息,属性始终是必需的。
如果您不希望它们成为必需项,则需要使它们可为空:

[Range(100, Double.PositiveInfinity, ErrorMessage = "The minimum amount for this event is £100")]
public double? TargetNumber { get; set; }

您必须使用 jQuery 为您的 属性 设置规则,如下所示:

     $('#myForm').validate({

        rules: {

               TargetNumber: {

                              required: function (element) {
                                         return false;
                                      }

                           }
             }


    });

TargetNumber 应该是 name 属性而不是 id 属性。我认为对于 MVC,它会根据模型名称自动分配名称属性,但请检查您的开发人员工具以查看分配给名称属性的值。