2016-03-10 2 views
0

Я использую Ajax.Begin Form для отправки данных в форме без обновления всей страницы, мне нужно проверить текстовое поле, если оно имеет значение, тогда данные должны быть опубликованы должно быть показано другое сообщение проверки, но проблема заключается в валидации, и данные публикации одновременно происходят. Если я не добавлю файл jquery.unobtrusive-ajax.js, то мое частичное представление будет возвращаться как отдельная белая страница, но валидация работает, а форма не публикуется до тех пор, пока текстовое поле не будет иметь значение, НО, если я добавлю jquery.unobtrusive-ajax.js файл на странице, он отправляет данные, имеет ли значение текстовое поле или нет. Что не так с кодом, я не получаю это вообще. Пожалуйста, помогите, я провел два дня, пробовал свои возможные решения и до сих пор не добился успеха.Bootstrap Validator и Ajax Begin Form Conflict in Partial Views, MVC

Это мой Главный вид (Parent View), имеющий 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> 

Где patientfound - это div, который будет отображать детали, если найден. Я дал это в UpdateTargetId AjaxBeginForm.

Моего контроллер возвращается PartialView

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

ответ

0

В опции записи Ajax, как это:

OnBegin = "return StartValidation();" 

Теперь определит яваскрипт функции под названием StartValidation с этим кодом:

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

Спасибо для решения, я пробовал это, но не успел опубликовать форму :( –

+0

Я отредактировал t он отвечает, пожалуйста, еще раз проверьте –

+0

Спасибо, но не успел снова, я не знаю, что не так с этой валидацией –

Смежные вопросы