2015-08-11 4 views
0

Недавно я добавил ссылки на проект jquery, и теперь сообщение из представления не запускается. Post ActionResult сохранил пользовательские настройки, и теперь точка останова внутри Почты не ударяется. В Visual Studio нет ошибки, но консоль Chrome выводит предупреждения «Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя. Для получения дополнительной справки отметьте http://xhr.spec.whatwg.org/». и «Установка« XMLHttpRequest.withCredentials »для синхронных запросов устарела».Синхронный XMLHttpRequest устаревшая блокировка HttpPost ActionResult

Код был запущен до jquery, так же как проблема связана с этими предупреждениями, какой-то другой аспект jquery или, возможно, что-то еще? Предложения here, here и here предлагают возможные решения для асинхронных предупреждений, но, скажем, добавление async к новым объявлениям в макете приведет к повторному запуску Post? Спасибо заранее всем.

The View:

@using Project.Data 
@model Project.Models.PreferencesModel 
@{ 
ViewBag.Title = "Preferences"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<div class="page_bar clearfix"> 
<div class="row"> 
    <div class="col-md-8"> 
     <h1 class="page_title"> 
      <i class="fa fa-gears"></i> Preferences 
     </h1> 
    </div> 
</div> 

<div class="page_content"> 
<div class="container-fluid"> 
    <form data-parsley-validate> 
     @using (Html.BeginForm("Preferences", "Manage", FormMethod.Post, new { id = "PreferencesForm", autocomplete = "on", data_parsley_validate = "data-parsley-validate" })) 
     { 
      @Html.AntiForgeryToken() 
      @Html.HiddenFor(m => m.PreferenceID) 
      @Html.HiddenFor(m => m.PreferenceCreatedBy) 
      @Html.HiddenFor(m => m.PreferenceCreatedDate) 
     <div class="row"> 
      <div class="col-lg-12"> 
       <div class="panel panel-default"> 
        <div class="panel-body"> 
         <div class="col-md-4"> 

           @Html.LabelFor(m => m.PricingPreferenceTypeID, "Pricing Preference Type") 
           @Html.DropDownListFor(m => m.PricingPreferenceTypeID, StaticCache.GetPricingPreferenceTypes(), new { @class = "form-control", data_parsley_required = "true" }) 
           @Html.ValidationMessageFor(m => m.PricingPreferenceTypeID) 

         </div> 
         <div class="col-md-4"> 

           @Html.LabelFor(m => m.PricingStrategyID, "Pricing Strategy") 
           @Html.DropDownListFor(m => m.PricingStrategyID, StaticCache.GetPricingStrategies(), new { @class = "form-control", data_parsley_required = "true" }) 
           @Html.ValidationMessageFor(m => m.PricingStrategyID) 

         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="col-lg-12 text-right"> 
       <button type="submit" class="btn btn-success btn-large">Save</button> 
      </div> 
     </div> 
} 
</form> 
</div> 
</div> 

Макет содержит следующие новые объявления:

<script src="~/Scripts/jquery-2.1.3.js"></script> 
<script src="/Scripts/jquery-ui-1.11.4.js"></script> 

Наконец, ранее работал контроллер:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Preferences(PreferencesModel model) 
{ 
    ProjectEntities projectDb = new ProjectEntities(); 

    projectDb.uspAddPreference(DateTime.Now, model.PricingStrategyID, null, null, model.PricingPreferenceTypeID); 

    return RedirectToAction("Preferences"); 
} 

EDIT Этот кусок jquery был добавлен в нижней части представления, чтобы сделать одно выпадающее меню зависимым от другого, но точка останова внутри HttpPost ActionResult по-прежнему не попадает. Что может быть причиной этого?

@section Scripts{ 
<script> 
    $(function() { 
     var $dropdownInput = $("#PricingStrategyID"); 
     $("#PricingPreferenceTypeID").change(function() { 
      if (this.value != 1) { 
       $dropdownInput.hide(); 
      } else { 
       $dropdownInput.show(); 
      } 
     }).change(); 
    }); 
</script> 
} 

второй EDIT

кнопку Сохранить включены в первоначальный вид.

+2

wheres ajax call ?? – joyBlanks

+2

Возможно, это не связано, но у вас есть вложенные теги формы (недопустимый html и не поддерживается), и у вас есть 2 ссылки на 'jquery-ui' (включая один или другой) –

+0

Ничего в этом коде не будет генерировать ajax-вызов – charlietfl

ответ

0

Ответ на этот вопрос кажется вложенным тегом формы, который ускользнул от обнаружения. Как только он был удален, Post работал нормально.

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