2016-07-31 4 views
0

У меня есть проект MVC4, где я использовал NuGet для установки jQuery 3.1.0 и Microsoft.jQuery.Unobtrusive.Ajax 3.2.3. Мой комплект это:Конфликт между ненавязчивым-ajax и jQuery

bundles.Add(new ScriptBundle("~/bundles/scripts").Include(
      "~/Scripts/jquery-3.1.0.min.js", 
      "~/Scripts/jquery.unobtrusive-ajax.min.js", 
      "~/Scripts/jquery.hoverIntent.minified.js", 
      "~/Scripts/newScript.js", 
      "~/Scripts/nav.js" 
      )); 

У меня есть мнение, содержащий Ajax.BeginForm блок, как это:

@using (Ajax.BeginForm("ValidateBASFID", new AjaxOptions { UpdateTargetId = "ValidateBASFIDError", InsertionMode = InsertionMode.Replace })) 
{ 
    <label class="required">BASF ID</label>@Html.ValidationMessageFor(model => model.BASFID, "", new { @class = "text-danger" }) 
    @Html.TextBoxFor(model => model.BASFID, new { style = "width: 50px; margin-right:20px; float:left;", @class = "form-control" }) 
    <input type="submit" value="Validate with BASF ID" class="smallButton" style="float:left;" /> 
    <div id="ValidateBASFIDError" class="validationError text-danger"></div> 
    <div style="clear:both;"></div> 
} 

Этот блок точек на действия контроллера, как это:

public ActionResult ValidateBASFID(string BASFID) 
{ 
    Models.Repositories.SectionRepository _repository = new Models.Repositories.SectionRepository(); 
    MemberVM Member = _repository.ValidateBASFID(BASFID); 

    if (Member != null) 
    { 
     Member.SaveMemberInfo(); 

     return RedirectToAction("Sections", new 
     { 
      SectionSignupMasterID = Member.SectionSignupMasterID, 
      VerificationEmail = Member.Email, 
      MemberName = Member.FullName 
     }); 
    } 
    else 
    { 
     ViewBag.Message = "Invalid BASF ID"; 
     return PartialView("_ValidationError"); 
    } 
} 

Идея заключается в том, что я буду использовать AJAX, чтобы отправить обратно значение ID и протестировать его. Если идентификатор действителен, я перенаправляю его в раздел Разделы. Если идентификатор недействителен, возвращается сообщение об ошибке.

Что происходит, так это то, что действительный идентификатор перенаправляется на просмотр разделов, но страница не появляется. Единственное, что отображается, это год. Он просто говорит «2016» в верхнем левом углу страницы. Страница также застревает, пытаясь получить изображение из другого домена.

Если я комментирую только ненавязчивый аякс из пакета, перенаправление просмотра работает нормально (но я не могу получить сообщение об ошибке, если идентификатор недействителен). Если я комментирую только jQuery из пакета, перенаправление просмотра работает нормально (но другой код на стороне клиента не работает).

Почему эти две библиотеки скриптов не работают хорошо вместе или что я могу сделать, чтобы получить дополнительную информацию о том, что здесь происходит? Благодарю.

+0

Ваше создание ajax все. Весь смысл ajax оставаться на одной странице. Они никогда не перенаправляются. Сделайте нормальный submit, и если есть ошибка, добавьте 'ModelStateError' и верните представление –

ответ

0

Stephen is right. Я немного сыграл с кодом и обнаружил, что весь вид разделов пытался загрузить в цель ajax.beginform. Это не удалось из-за некоторого javascript в нижней части страницы, но Ajax не предназначен для перенаправления.

Причина, по которой она работала, когда я прокомментировал ненавязчивую библиотеку или jQuery, был из-за того, что я разбивал ajax, и он просто делал стандартную обратную передачу.

UPDATE: Я нашел сообщение here также Стивеном, который решил мою проблему.

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