我目前正在使用一个 mvc 站点,其中有一个相当广泛的主布局页面。它依赖于数据库中的数据,而数据库中的数据又包括固有逻辑,例如布局中要包含的内容等。
我的大部分控制器操作都在此布局中呈现。我不确定如何工作。用于 Web 表单中的母版页面,所有逻辑都驻留在母版页中。我有几种机制来实现通用布局逻辑,但正在寻找实现这一目标的最佳实践方式。
选项是:
- 在所有控制器操作中复制逻辑(不是真正的选择)
- 将逻辑提取到另一个类并从控制器操作中调用它
- 所有控制器都继承自基础控制器,该基础控制器覆盖 OnActionExecuting 方法,我们使用它来执行逻辑并在 TempData 中返回必要的数据
- 在 cshtml 中使用“RenderAction”来调用必要的控制器操作并将布局提取到较小的局部视图中
还有其他对我开放的选择或建议吗?