我最近添加了对项目的jquery引用,现在View中的Post没有触发。 Post ActionResult保存了用户选择的设置,现在Post中的断点没有被击中。 Visual Studio中没有错误,但Chrome的控制台会输出警告“主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。有关更多帮助,请查看http://xhr.spec.whatwg.org/。”并且不推荐使用“为同步请求设置'XMLHttpRequest.withCredentials'。”
代码在jquery之前运行,那么问题与那些警告,jquery的其他方面或者其他可能的东西有关吗?建议here,here和here为异步警告提供了可能的解决方案,但是,如果将布局中的新声明添加为异步会再次触发Post?在此先感谢所有人。
观点:
@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");
}
修改 这段jquery被添加到View的底部以使一个下拉列表依赖于另一个,但是HttpPost ActionResult内部的断点仍未被击中。可能导致这种情况的原因是什么?
@section Scripts{
<script>
$(function () {
var $dropdownInput = $("#PricingStrategyID");
$("#PricingPreferenceTypeID").change(function () {
if (this.value != 1) {
$dropdownInput.hide();
} else {
$dropdownInput.show();
}
}).change();
});
</script>
}
第二次编辑
原始视图中包含的保存按钮。
答案 0 :(得分:0)
这个问题的答案似乎是一个无法检测的嵌套表格标签。一旦删除,邮政工作正常。