首页 > 解决方案 > 无法删除 MVC 中的强制验证

问题描述

我不是专家级 MVC 程序员,但必须对代码进行一些小改动。有什么帮助吗?我有一个具有 [required] 属性的字段 CallerType。但是,我不想再强制了,所以我删除了 [required] 属性,但仍然得到相同的 input required 错误。

public virtual CallType CallType { get; set; }

[Display(Name = "Type of Calls")]
/*Akbar-start*[Required]*Akbar-end*/
public int CallTypeID { get; set; }

<div class="form-group col-3">
  <label asp-for="Intake.CallTypeID" class="control-label"></label>
  <select asp-for="Intake.CallTypeID"class="form-control">asp-items="Model.CallTypes">
   <option value="">Please Select</option>
  </select>
  <span asp-validation-for="Intake.CallTypeID" class="text-danger"></span>
</div>

错误: 在此处输入图像描述

我也看到了像下面这样的 javascript,但不确定它是如何被调用的:

$('input').each(function () {
    var req = $(this).attr('data-val-required');
    var hide = $(this).attr('hide-required-indicator');
    var hasIndicator = $(this).hasClass('has-required-indicator');
    if (undefined != req && undefined == hide && !hasIndicator) {
      var label = $('label[for="' + $(this).attr('id') + '"]');
      var text = label.text();
      if (text.length > 0) {
        label.append('<span style="color:red" class="required-indicator"> *</span>');
        $(this).addClass('has-required-indicator');
      }
    }
  });

  $('select').each(function () {
    var req = $(this).attr('data-val-required');
    var hasIndicator = $(this).hasClass('has-required-indicator');
    if (undefined != req  && !hasIndicator) {
      var label = $('label[for="' + $(this).attr('id') + '"]');
      var text = label.text();
      if (text.length > 0) {
        label.append('<span style="color:red"> *</span>');
        $(this).addClass('has-required-indicator');
      }
    }
  });

标签: validationmodel-view-controller

解决方案


我能够解决这个问题。这是诀窍:

将 int 更改为 int?

public int CallTypeID { get; set; }

IE

public int? CallTypeID { get; set; }

? 表示该字段可以为空。它覆盖了 [Required] 属性


推荐阅读