我正在尝试使用Ajax.BeginForm。当我提交时,我想渲染局部视图。一切正常,但InsertionMode = InsertionMode.Replace不起作用,它在新窗口中打开局部视图。
我在同一页面上也有一个Ajax.ActionLink,工作正常。
我已经添加了jquery.unobtrusive-ajax.js但它仍然无效。另外,在web.config中我有
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
以下是我在视图中的代码:
<div id="div_to_replace">
@using (Ajax.BeginForm("Edit", "MyController", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "div_to_replace" })){
<div class="editor-field">
@Html.EditorFor(model => model.name)
@Html.ValidationMessageFor(model => model.name)
</div>
<input type="submit" value="Save" />
}
</div>
我的控制员:
[HttpPost]
public ActionResult Edit(MyObject object)
{
try
{
if (ModelState.IsValid)
{
updateModel(object)
return PartialView("_MyPartilView", model);
}
else
{
return PartialView(object);
}
}
catch
{
return PartialView(object);
}
}
谢谢!
答案 0 :(得分:2)
我发现了这个问题。我使用的是最后一个jquery版本(1.9.1),它不适用于原始的jquery.unobtrusive-ajax.js文件。
我改为jquery版本1.4.4(创建asp.net mvc 3项目时默认出现的版本),问题解决了。
答案 1 :(得分:0)
确保包含jQuery。
确保您拥有ID为div_to_replace
的div。
在UnobtrusiveJavaScriptEnabled
文件夹
Views
处于活动状态
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>