2

在我的 ASP MVC3 视图中,我使用以下 Ajax 调用来检索部分视图并将部分附加到特定的fieldset

阿贾克斯

    $("#addItem").click(function () {
        alert("here");
        $.ajax({
            url: '@Url.Action("BlankDropDownItem", "DropDownValues")',
            dataType: 'html',
            cache: false,
            success: function (html) {
                alert(html);
                $("#items").append(html); 
            }
        });
        return false;
    });

此 Ajax 调用一个非常简单的ViewResult控制器方法,该方法应该返回部分视图。

控制器

    public ViewResult BlankDropDownItem()
    {
        return View("DropDownItemPartial", new DropDownValues());
    }

这是部分中的所有代码。当我在 VS 2010 中创建它时(我现在已经这样做了两次以确保)我选中了“部分视图”复选框,它使“使用共享布局”选项变灰。

局部视图

@model Monet.Models.DropDownValues
<div class="editor-label">
     @Html.LabelFor(model => model.AllowedValue)
</div>
<div class="label-field">
    @Html.EditorFor(model => model.AllowedValue)
    @Html.ValidationMessageFor(model => model.AllowedValue)
</div>
<div class="editor-label">
    @Html.LabelFor(model => model.DisplayValue)
</div>
<div class="label-field">
    @Html.EditorFor(model => model.DisplayValue)
    @Html.ValidationMessageFor(model => model.DisplayValue)
</div>

无论出于何种原因,当我在 Ajax函数的这一行返回alert的对象上放置一个htmlsuccess

success: function (html) {

我看到该html对象从共享布局中返回所有 HTML,因此它本质上是返回整个页面而不是部分视图。这是 Ajax 调用完成后的屏幕截图。

在此处输入图像描述

4

1 回答 1

5

我认为您遇到了一个小的“容易错过”的语法问题:D

你有:

public ActionResult BlankDropDownItem()
{
    return View("DropDownItemPartial", new DropDownValues());
}

你应该有:

public ActionResult BlankDropDownItem()
{
    return PartialView("DropDownItemPartial", new DropDownValues());
}

希望这可以帮助!

于 2013-05-23T19:08:01.173 回答