【发布时间】:2014-09-19 20:08:08
【问题描述】:
我在我的网站上使用侧边栏,其中包含来自我的数据库的统计信息以及链接和其他文本等静态数据。
在我的_Layout.cshtml 中,我使用Html.RenderAction("SidebarPV", "Home"); 来调用侧边栏。
侧边栏是一个使用 ViewModel 统计数据的局部视图。
SidebarPV 是在我的HomeController 中生成的:
public ActionResult SidebarPV() {
SidebarViewModel viewmodel = new SidebarViewModel();
DateTime now = DateTime.Now;
viewmodel.stat_data1 = db.Table1.Where(e => e.DateDeb <= now && e.DateFin >= now).Count();
viewmodel.stat_data2 = db.Table2.Where(c => c.DateDeb <= now && c.DateFin >= now).Count();
return PartialView("SidebarPV", viewmodel);
}
它就像一个魅力,但我不需要所有视图的统计信息,只需要/Home/Index
所以我想在 ser 不在网站索引上时“评论”生成的统计信息。
感谢您的建议。
编辑(解决方案,感谢krillgar):
我写在我的_Layout
@{
var isHome = ViewContext.RouteData.Values["controller"].ToString().ToUpper() == "HOME";
var isIndex = ViewContext.RouteData.Values["action"].ToString().ToUpper() == "INDEX";
if (isHome && isIndex) {
Html.RenderAction("SidebarPV", "Home");
}
else {
Html.RenderAction("SidebarNoStatPV", "Home");
}
}
我知道我需要创建两个局部视图,但一个是静态的,所以我不会长时间编辑它:)。 经测试,有效。
【问题讨论】:
-
把部分放在你的主页索引上,而不是你的布局上。
-
如果它被隐藏在 HTML 标记中的某个位置,而在 Home/Index 视图中将变得无法访问,那将是不可能的。
标签: c# razor asp.net-mvc-5 partial-views