asp.net mvc + Ajax.BeginForm OnBegin没有触发

时间:2016-11-12 09:42:00

标签: ajax asp.net-mvc

在阅读了几个关于这个问题的帖子后,它主要与包括

有关
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

以及首先包含jquery的正确顺序。

<script src="~/Scripts/jquery-1.12.4.js"></script>

我认为我做得很好,但OnBegin还没有开火。

_Layout.cshtml:

<head>
<meta charset="utf-8" />
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />

<title>Test</title>

@Scripts.Render("~/bundles/modernizr")

<script src="~/Scripts/jquery-1.12.4.js"></script>   
<script src="~/Scripts/bootstrap.min.js"></script>   
<script src="~/Scripts/respond.min.js"></script>
<script src="~/Scripts/jquery.dataTables.js"></script>
<script src="https://cdn.datatables.net/responsive/2.1.0/js/dataTables.responsive.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/buttons.colVis.min.js"></script>
<script src="~/Scripts/light-bootstrap-dashboard.js"></script>
<script src="~/Scripts/bootstrap-notify.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>    

@RenderSection("scripts", required: false)
</head>

所以流程的顺序是:

学校观点:

@model Test.Models.School

<div class="editorRow">
@using (Html.BeginCollectionItem("schools"))
{
    @Html.ActionLink("New Employee", "NewEmployee", "Test", new
   {
       @class = "btn btn-info btn-md",
       data_toggle = "modal",
       data_target = "#modal-container-employee"
   })   
</div>

<div id="modal-container-employee" class="modal fade" tableindex="-1" role="dialog">
<div class="modal-content">
    <div class="modal-body">
    </div>
</div>
</div>

控制器:

public ActionResult NewEmployee()
    {
        var newEmployee = new Employee();

        return View(newEmployee);
    }

员工观点:

@model Test.Models.Employee

@{
    Layout = null;
}

@using (Ajax.BeginForm("PostEmployee", "Employee", new AjaxOptions
{
    HttpMethod = "post",
    InsertionMode = InsertionMode.Replace,       
    OnBegin = "closeModal"
}))
{
@Html.AntiForgeryToken()

<div id="test" class="">
    <div class="modal-title title">
        <input type="submit" id="submit" value="Save" /><span id="closes">x</span>
    </div>               
        @Html.EditorFor(model => model.FullName)    
</div> 
}

<script>
    function closeModal() {
        $('#modal-container').modal('hide');          
    }
</script>

控制器:

 [HttpPost]    
    public ActionResult PostEmployee(Employee model)
    {
        try
        {
            var newEmployee = new Employee
            {                    
                FullName = model.FullName
            };

            db.Employees.Add(newEmployee);
            db.SaveChanges();

            return Json(new { status = "success" }, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            return Json(new { status = "error", errorMessage = ex.Message }, JsonRequestBehavior.AllowGet);
        }
    }

结果,&#34;成功&#34; Json被返回,但是ajax没有捕获它,它直接转到显示JSON数组的另一页{&#34; status&#34;:&#34; success&#34;}。 有谁能找到问题?

0 个答案:

没有答案