如何在_Layout.cshtml中管理逻辑

时间:2013-01-15 00:37:24

标签: asp.net-mvc razor asp.net-mvc-4

我目前正在使用一个mvc网站,我有一个相当广泛的主要布局页面。它依赖于来自数据库的数据,而数据又包括固有的逻辑,如布局中包含的内容等。

我的大多数控制器操作都在此布局中呈现。我不知道如何工作。用于在Web表单中掌握页面,所有逻辑都驻留在母版页中。我有几种机制来实现通用布局逻辑,但寻找实现这种目标的最佳实践方法。

选项包括:

  • 在所有控制器操作中复制逻辑(不是真正的选项)
  • 将逻辑提取到另一个类并从控制器操作
  • 中调用它
  • 所有控制器都从一个基本控制器继承,该控制器覆盖了OnActionExecuting方法,我们将其执行逻辑并在TempData中返回必要的数据
  • 使用cshtml中的“RenderAction”调用必要的控制器操作并将布局提取到较小的部分视图中

对我开放的任何其他选项或建议?

1 个答案:

答案 0 :(得分:3)

如果我理解正确,我会使用行动部分

@Html.Action("{ActionName}", "{Controller}", new { roleName= "Admin" })

Action Partials调用

类型的专用控制器操作方法
   [ChildActionOnly]
    public ActionResult _TopNav(string roleName)

通过这种方式,您可以设计循环逻辑,该逻辑将在整个应用程序中传播而无需复制。

更好的是,如果您的_Layout处理基于特权的链接生成,您可以传递角色ID并控制最终用户看到的内容以及导航按钮指向的内容。