部分视图中的Bootstrap验证器和Ajax开始表单冲突,MVC

时间:2016-03-10 05:54:33

标签: javascript jquery ajax asp.net-mvc twitter-bootstrap

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

这是具有PartialView的主视图(父视图)

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

如果患者发现是一个div,如果找到则会呈现细节。我在AjaxBeginForm的UpdateTargetId中给出了这个。

我的控制器正在返回PartialView

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

1 个答案:

答案 0 :(得分:0)

在Ajax选项中写这样:

OnBegin = "return StartValidation();"

现在使用以下代码定义一个名为StartValidation的javascript函数:

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