这是一个场景:假设我的网站上有两个负责显示不同类型内容的 Controller -页面和文章。我需要将“部分 View ”嵌入我的母版页,该母版页将列出按某些条件过滤的页面和文章,并显示在每个页面上。我无法在主页上设置模型(是吗?)。如何使用Html.RenderPartial解决此任务?
[编辑]
是的,我可能会为列出文章和页面创建单独的局部 View ,但是仍然存在一个障碍,我不能也不应在母版页上设置模型。我需要以某种方式说“这是页面”作为我的renderpartial和文章的参数。 renderpartial与母版页中来自数据库的数据的整个概念对我来说有点模糊。
最佳答案
如何创建HtmlHelper扩展方法,该方法允许您在 Controller 上的action上调用部分 View 结果。
就像是
public static void RenderPartialAction<TController>(this HtmlHelper helper, Func<TController, PartialViewResult> actionToRender)
where TController : Controller, new()
{
var arg = new TController {ControllerContext = helper.ViewContext.Controller.ControllerContext};
actionToRender(arg).ExecuteResult(arg.ControllerContext);
}
然后,您可以在母版页中使用它,例如
<% Html.RenderPartialAction((HomeController x) => x.RenderPartial()) %>
并在您的 Controller 中使用适当的方法
public PartialViewResult RenderPartial()
{
return PartialView("~/Path/or/View",_homeService.GetModel())
}
好吧那还是我的2美分