首页 > 解决方案 > 在下拉列表中选择值时如何不进行验证

问题描述

在此表单上创建链接,当我选择另一个委员会类型时,该表单将验证所有必需的空白字段。我正在尝试找出一种方法,以便当我在下拉列表中选择另一个委员会类型时,这些字段不会验证。目前,当我调试时,由于表单在进入控制器之前验证的明显原因,它没有进入控制器中的 post 操作方法。

如果您需要查看更多代码,例如控制器或视图模型中的操作方法,我也可以提供。

看法

    <div class="form-group col-md-8">
       <div asp-validation-summary="All" id="validation-error" class="text-danger custom-validation- 
        summary"></div>
     </div>

     <input id="link-id" asp-for="@Model.LinkId" type="hidden" />
     <input name="FetchCategories" type="hidden"/>
    <div class="form-group col-md-8 col-lg-4">
      <div class="form-group">
           @{
        var authorizedCommitteeTypes = await Model.CommitteeType
            .ToSelectListAsync(AuthorizationService, User, AuthRequirements.AdminCommitteeType);

        if (authorizedCommitteeTypes.Count == 1)
        {
            <input id="committeeType" name="committeeType" type="hidden" 
            value="@authorizedCommitteeTypes.FirstOrDefault()?.Value" />
        }
        else
        {
            <label class="control-label">Committee Type</label>
            <select id="add-edit-committee-type"
                    name="committeeType"
                    asp-for="@Model.CommitteeType"
                    asp-items="@authorizedCommitteeTypes"
                    class="form-control">
            </select>
        }
    }
       </div>
  </div>
    <div class="form-group col-md-8 col-lg-4">
     <label class="control-label">Category</label>
   @{
    if (Model != null && Model.AvailableCategories != null)
       {
         var availableCategories =
            new SelectList(
                Model.AvailableCategories.OrderBy(c => c.Order),
                dataValueField: "CategoryId",
                dataTextField: "Title",
                selectedValue: Model.CategoryId);

        <select id="dropdown-linkCategories" required
                asp-for="@Model.CategoryId"
                asp-items="@availableCategories"
                class="form-control">
            <option>-- Select --</option>
        </select>
       }
      else
       {
        <select id="dropdown-linkCategories"
                class="form-control">
            <option>-- Select --</option>
        </select>
        }
      }
     </div>


   <div class="form-group col-md-8 col-lg-4">
    <label class="control-label">Title</label>
  <input id="title" asp-for="Title" name="Title" class="form-control" />
 </div>

 <div class="form-group col-md-8 col-lg-4">
    <label class="control-label">Display Order</label>
   <div>
     <input id="order" asp-for="Order" name="Order" class="form-control" />
     </div>
  </div>

   <div class="form-group col-md-8 col-lg-4">
    <label class="control-label">URL</label>
     <input id="url" asp-for="URL" name="URL" class="form-control" />
 </div>

 <div class="form-group col-md-8 col-lg-12">
   <label class="control-label">Description</label>
     <textarea class="rtextDescription" name="Description" id="Description" row="1" cols="60"
          data-val-maxlength-max="200" asp-for="Description"
          data-val-maxlength="Max length for Description is 200"></textarea>
   </div>

  @{

    if (Model.LinkId == 0)
    {
        <div class="form-group col-md-12">
            <input type="submit" id="link-submit"
                   class="btn btn-forum col-sm-12 col-md-2 col-lg-2"
                   value="Add" />
            <a asp-area="Admin"
               asp-controller="Link"
               asp-action="Index"
               class="btn btn-forum col-sm-12 col-md-2 col-lg-2">Back to Links</a>
        </div>
    }
    else
    {
        <div class="form-group col-md-8 col-lg-12">
            <input type="submit" value="Save" id="edit-submit"
                   class="btn btn-forum col-sm-12 col-md-2 col-lg-2" />

            <a asp-area="Admin"
                asp-controller="Link"
               asp-action="Index"
               class="btn btn-forum col-sm-12 col-md-2 col-lg-2">Back to Links</a>
         </div>
      }
  }

JS

$(document).on("change", "#form-create-link #add-edit-committee-type", function () {
$('input[name="FetchCategories"]').val(true);  
$(this).closest('form').submit()
});

标签: javascripthtmlasp.net-core

解决方案


推荐阅读