我使用asp.net mvc3构建我的网站,布局是2列,主要内容是侧边栏。
我为侧边栏创建了一个部分。这个侧边栏将显示前10篇文章。我现在所做的是查询每个控制器上的前10篇文章。
有没有办法在一个地方完成并在所有控制器上使用它?
答案 0 :(得分:6)
您可以使用Html.RenderAction([methodname], [controllername])
执行此操作。所以在你的_Layout.cshtml中,你最终会得到类似的东西:
<div id="content">
@RenderBody()
</div>
@{ Html.RenderAction("ShowTopArticles", "Article"); }
然后在ArticleController
:
private readonly int MaxArticles = 10;
[ChildActionOnly]
public PartialViewResult ShowTopArticles()
{
var model = articleRepository.GetTopArticles(MaxArticles);
return PartialView(model);
}
使用属性ChildActionOnly
标记操作意味着只能通过调用Html.Action()
或Html.RenderAction()
来调用该操作。