Bootstrap Validator 和 Ajax 在 Partial Views 中开始形式冲突,MVC

Bootstrap Validator and Ajax Begin Form Conflict in Partial Views, MVC

本文关键字:开始 冲突 MVC Views Validator Ajax Partial Bootstrap      更新时间:2023-09-26

我正在使用Ajax.Begin Form在不刷新整个页面的情况下在表单上发布数据,我需要验证文本框,如果它有价值,则应发布数据,否则应显示验证消息,但问题是验证和发布数据同时发生。如果我不添加 jquery.unobtrusive-ajax.js 文件,那么我的部分视图将作为单独的白页返回,但验证正在工作并且表单不会发布,直到文本框有价值,但是如果我在页面上添加 jquery.unobtrusive-ajax.js 文件,无论文本框是否有价值,它都会发布数据。代码有什么问题,我根本不明白这一点。请帮忙,我花了两天时间尝试了我可能的解决方案,但仍然没有成功。

这是我的主视图(父视图)具有部分视图

<div id="div_SearchPatient2">
     @Html.Partial("SearchPatientPartial");                                                    
</div>
@Scripts.Render("~/bundles/jqueryval")

jqueryval是一个包含jquery.unobtrusive-ajax.js文件的捆绑包。

  <div> 
     @using (Ajax.BeginForm("Search", "Patient", new { },
             new AjaxOptions
             {
               HttpMethod = "POST",
               UpdateTargetId = "patientfound"
             },
             new
             {
               @name = "SearchPatientForm",
               @id = "frmSearchPatient",
             }
             ))
             {
                 @Html.AntiForgeryToken()
                 <div class="form-title">
                     Enter MR Number to search patient
                 </div>
                 <div class="col-lg-4">
                    <div class="form-group">
                      <div class="col-lg-6">
                         <label class="control-label">MR Number</label>
                      </div>
                    <div class="col-lg-6">
                       <input type="text" class="form-control"    name="command" data-mask="999-99-99" placeholder="000-00-00" required data-bv-notempty="true" data-bv-notempty-message="MRNo. is required." />
                    </div>
                   </div>
                 </div>
                  <div class="form-group">
                    <div class="col-md-4">
                       <input class="btn btn-darkorange" type="submit" value="Search" />
                    </div>
                  </div>
                <div id="patientfound">
                   @Html.Partial("PatientFoundPartial")
                </div>
           }
</div>

其中 patientfound 是一个div,如果找到,它将呈现详细信息。我已经在AjaxBeginForm的UpdateTargetId中给出了这个。

我的控制器正在返回部分视图

 [HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Search(FormCollection collection, string id)
 {
    // some code to get data
    return PartialView("PatientFoundPartial");
 }

在 Ajax 选项中写成这样:

OnBegin = "return StartValidation();"

现在用这段代码定义一个名为 StartValidation 的 javascript 函数:

function StartValidation(){ if($('fromid').validate()){return true;}return false;}