如何使用jQuery非侵入式验证从表单字段中删除“必需”设置

时间:2018-08-20 12:02:48

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

我在从使用jQuery验证和jQuery不引人注目的表单的字段中删除“必需”字段验证时遇到了麻烦。

我有以下剃刀视图-

    <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; }

我尝试了以下操作以使该字段为非必填字段-

  • 删除了[Required]属性,但该字段仍获得表单 标记具有各种数据属性,并且是必需的
  • 在视图中将data_val =“ false”(和required =“ false”)添加到“ TextBoxFor”中

但是,仍然将该字段标记为提交时必填。

任何人都可以提出一种我不需要此字段的建议。

谢谢

2 个答案:

答案 0 :(得分:0)

对于结构,RequiredAttribute仅更改错误消息,始终需要属性。
如果您不希望使用它们,则需要将它们设置为可空:

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

答案 1 :(得分:0)

您必须像这样使用jQuery为您的媒体资源设置规则:

     $('#myForm').validate({

        rules: {

               TargetNumber: {

                              required: function (element) {
                                         return false;
                                      }

                           }
             }


    });

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