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 で作成したとき (確認のためにこれを 2 回実行しました)、[部分ビュー] チェックボックスをオンにすると、[共有レイアウトを使用] オプションがグレー表示されます。

部分図

@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

小さな「見逃しやすい」構文の問題が1つあると思います:D

あなたが持っている:

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

あなたが持っている必要があります:

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

お役に立てれば!

于 2013-05-23T19:08:01.173 に答える