Недавно я добавил ссылки на проект 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
кнопку Сохранить включены в первоначальный вид.
wheres ajax call ?? – joyBlanks
Возможно, это не связано, но у вас есть вложенные теги формы (недопустимый html и не поддерживается), и у вас есть 2 ссылки на 'jquery-ui' (включая один или другой) –
Ничего в этом коде не будет генерировать ajax-вызов – charlietfl