ASP.NET MVC 3 Ajax.BeginForm重定向到新窗口

时间:2013-06-03 15:31:47

标签: asp.net-mvc-3 ajax.beginform

我正在尝试使用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);
        }
    }

谢谢!

2 个答案:

答案 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文件夹

中的web.config上确保Views处于活动状态
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>