我正在使用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()
有什么问题?
由于
答案 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>