私の 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
と、html
success
success: function (html) {
html
オブジェクトが共有レイアウトからすべての HTML を返していることがわかります。つまり、部分的なビューではなく、基本的にページ全体を返しています。これは、Ajax 呼び出しが完了するとどのように見えるかのスクリーン ショットです。