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);
}
这会将部分视图 PartialView1 直接返回给客户端。这在 AJAX 场景中最有用,因为结果很可能不是整个 HTML 页面。部分视图是.ascx
文件。