ViewDataは、マークアップとレンダリングコードを含むビュー自体ではなく、実際のデータを含むことを目的としています。あなたがこれを行うことは不可能でしょうか:
public ActionResult MyActionMethod()
{
var model = new MyModel();
model.UsePartialView1 = false; // Tell the view not to use Partial View 1
return View("MyView", model);
}
そしてビューでMyView:
<% if (Model.UsePartialView1)
Html.RenderPartial("PartialView1", Model);
else
Html.RenderPartial("PartialView2", Model); %>
これにより、コントローラーによって設定された条件に応じて、同じモデルがレンダリングされるかPartialView1、同じモデルが使用されます。PartialView2
または、通常のビューではなく、コントローラーから直接モデルを含む部分ビューを返すには、次のようにします。
public ActionResult MyActionMethod()
{
var model = ...
ViewData["MyViewData"] = ...
return PartialView("PartialView1", model);
}
これにより、PartialViewPartialView1がクライアントに直接返されます。結果はおそらくHTMLページ全体ではないため、これはAJAXシナリオで主に役立ちます。部分ビューは.ascxファイルです。