1

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

谢谢!

4

2 回答 2

2

我发现了问题。我使用的是最新的 jquery 版本(1.9.1),它不适用于原始 jquery.unobtrusive-ajax.js 文件。

我更改为 jquery 版本 1.4.4(创建 asp.net mvc 3 项目时默认提供的版本),问题得到解决。

于 2013-06-04T14:29:24.880 回答
0

确保包含 jQuery。

确保您有一个带有 ID 的 div div_to_replace

确保在文件夹UnobtrusiveJavaScriptEnabled中的 web.config 上处于活动状态Views

<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
于 2013-06-03T15:45:11.283 回答