我有一个小型 MVC Web 项目,我希望能够实现以下目标:
- 根据活动域选择基本页面布局和 CSS/JavaScript
- 可选择允许在会话开始时覆盖此基本/默认设置。
为了帮助实现这一点,我创建了一个具有以下属性的布局对象:
public class PageLayout {
public string Reference { get; set; }
public string Domain { get; set; }
public string LayoutPath { get; set; }
public string CssPath { get; set; }
public string JavaScriptPath { get; set; }
}
我的想法是在会话开始时,将检查 URL 的布局参数。例如:
http://www.{Domain}.com/tech
在这种情况下,将检索具有引用“tech”的 Pagelayout 对象。如果未找到参数,则将检索其 Domain 属性与活动域匹配的页面布局对象。
我对实现这一点的正确方法有几个问题:
- 在 MVC 中实现此逻辑的最佳位置在哪里?Global.asax 中的 Session_Start 方法似乎是一个潜在的候选者
- 我想在整个会话中保留检索到的 PageLayout 对象。我打算通过某种管理类将它添加到会话状态。
如何使页面布局数据可用于每个页面。我考虑过创建一个自定义控制器,然后将其添加到 ViewBag(来自会话),因此主视图可以实现如下内容:
@{ 布局 = ViewBag.Pagelayout.LayoutPath; } ...
是否有更好/更清洁/更合适的机制来实现我的需要?