1

我正在为我们的扑克联赛写一个网站。在 _Layout 页面中,我想包含一些数据库信息,例如下一场比赛的日期以及本赛季还剩多少场比赛。我认为 _Layout 是最好的页面,因为我希望在所有页面上都有这些信息。

我怎样才能在那里获得这个实体框架数据?我认为控制器不是方式,因为 _Layout 只是其他使用自己的控制器的视图的模板。

任何信息或资源将不胜感激。

提前致谢,

保罗。

4

3 回答 3

1

您应该创建一个基本控制器,所有控制器都从该控制器继承。在那里,您可以覆盖该方法OnActionExecuting()并从数据库、缓存或任何地方加载该数据并将其传递给 Viewbag:

public class ControllerBase {
  protected override void OnActionExecuting(ActionExecutingContext ctx) {
      Viewbag.LayoutPageData = ...;
  }
}

或者,您可以为所有 Viewmodel 使用基类,并将数据与模型一起传递给视图。

您的布局页面也是一个视图,因此您可以使用视图模型类对其进行强类型输入。

于 2013-06-10T10:37:48.440 回答
0

您可以在部分页面示例“_NextGameDate.cshtml”中显示您的数据库信息

那么你必须通过以下方式将它包含在 _Layout.cshtml 页面中:

 @Html.Partial("_NextGameDate.cshtml");
于 2014-08-18T09:23:52.057 回答
0

您还可以像在此示例中一样使用 Html.Action

http://kazimanzurrashid.com/posts/viewdata-or-viewbag-avoid-dependency-pollution-in-asp-dot-net-mvc-controller

于 2013-06-10T14:42:57.957 回答