我无法使用Ajax.BeginForm()
命中服务器代码以下是我使用Ajax Helper方法的View的一部分
@model Ride.MMReports.ViewModels.ManualRecViewModel
.....
var options = new AjaxOptions
{
OnBegin = "OnBeginMethod",
OnFailure = "OnFailureMethod",
OnSuccess = "OnSuccessMethod",
OnComplete = "OnCompleteMethod",
HttpMethod = "Post"
};
using (Ajax.BeginForm("Index", "ManRecReport", options))
{
<button type="submit"
name="action"
value="Export to excel"
id="export-excel"
class="btn btn-primary"
Export to excel
</button>
}
@section scripts
{
@Scripts.Render("~/bundles/report")
@Scripts.Render("~/bundles/jqueryval")
}
我的包包括jquery.unobtrusive-ajax.js以及reports.js,其中包含所有事件方法
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
reports.js吼叫。浏览器能够显示警报,但它调用的最后一个方法是OnFailureMethod
var isError = false;
function OnBeginMethod() {
alert("OnBeginMethod");
}
function OnFailureMethod(error) {
isError = true;
alert("OnFailure");
}
function OnSuccessMethod(data) {
alert("OnSuccess");
}
function OnCompleteMethod(data, status) {
if (!isError) {
alert("OnCompleteMethod");
}
}
这里的问题是当我点击按钮时,jquery-3.1.1.js失败了 http://localhost:31111/[object%20HTMLButtonElement] 404(未找到) 在这一行失败
xhr.send( options.hasContent && options.data || null );
我的控制器方法如下所示:
[HttpPost, ValidateAntiForgeryToken]
public ActionResult Index(ManualRecViewModel vm)
{
....
}
有什么想法我做错了吗?