ajax.beginform有什么问题

时间:2016-09-16 07:06:13

标签: asp.net-mvc

我正在使用ASP.Net MVC 5和C#。我正在使用VS2015脚手架功能从我的模型结构生成视图和控制器。 控制器和视图为我的应用程序提供了一些编辑,创建和删除记录的基本功能。 所有表单视图都包含此声明:

@using (Html.BeginForm())

我试图通过以下方式替换此声明:

@using (Ajax.BeginForm("Edit", new AjaxOptions()))

我在Edit action Method中更改了一些内容。如您所见,我评论了一些代码,以便不重定向(例如显示错误消息)

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "....")] MyDataObject obj)
    {
     /*   if (ModelState.IsValid)
        {
            ...
            db.SaveChanges();
            return RedirectToAction("Index");
        }*/
        return View(obj);
    }

当然,我已经包含了Microsoft Jquery Unobtrusive Ajax NuGet pacakges和2个JS脚本。 A还在web.config中添加了这一行:

<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

我没有JS错误,但刷新了整个页面。我可以看到它beaucse我在我的页面上添加这种标签(在_layout和表单内)

@DateTime.Now.ToLongTimeString()

有什么问题?

由于

1 个答案:

答案 0 :(得分:0)

如果您只想重新加载表单,则必须定义如下的AjaxOptions:

@using (Ajax.BeginForm(new AjaxOptions
{
    HttpMethod = "POST",
    Url = "api/Person",
    OnComplete = "personSavedComplete" // Your function name define your form refresh logic into this
}))

并确保使用以下脚本:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"> </script>