这是一个场景:假设我有两个控制器的站点负责显示不同类型的内容 – 页面和文章.我需要将Partial View嵌入到我的母版页中,该母版页将列出使用某些条件过滤的页面和文章,并显示在每个页面上.我无法在我的母版页上设置模型(我是对的吗?).如何使用
Html.RenderPartial解决此任务?
[编辑]
是的,我可能会为列出文章和页面创建单独的部分视图,但仍有一个障碍,我不能也不应该在母版页上设置模型.我需要以某种方式说“这里是页面”作为我的renderpartial的参数,也是文章的参数. renderpartial的整个概念与来自masterpages中的数据库的数据对我来说有点模糊.
解决方法
如何创建一个HtmlHelper扩展方法,允许您在控制器上的操作上调用部分视图结果.
就像是
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()) %>
并在您的控制器中适当的方法
public PartialViewResult RenderPartial() { return PartialView("~/Path/or/View",_homeService.GetModel()) }
那么这就是我的2美分