0

我有一个小型 MVC Web 项目,我希望能够实现以下目标:

  1. 根据活动域选择基本页面布局和 CSS/JavaScript
  2. 可选择允许在会话开始时覆盖此基本/默认设置。

为了帮助实现这一点,我创建了一个具有以下属性的布局对象:

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 属性与活动域匹配的页面布局对象。

我对实现这一点的正确方法有几个问题:

  1. 在 MVC 中实现此逻辑的最佳位置在哪里?Global.asax 中的 Session_Start 方法似乎是一个潜在的候选者
  2. 我想在整个会话中保留检索到的 PageLayout 对象。我打算通过某种管理类将它添加到会话状态。
  3. 如何使页面布局数据可用于每个页面。我考虑过创建一个自定义控制器,然后将其添加到 ViewBag(来自会话),因此主视图可以实现如下内容:

    @{ 布局 = ViewBag.Pagelayout.LayoutPath; } ...

是否有更好/更清洁/更合适的机制来实现我的需要?

4

1 回答 1

1

是的,有更简洁的方法可以做,例如使用一些第三方工具并将其挂接到您的应用程序。

你可以看看这个网站,这是最近推出的最新的 http://razorc.net/

另请查看 http://www.codeproject.com/Articles/32847/ASP-NET-MVC-Dynamic-Themes http://codeofrob.com/entries/dynamically-switching-between-master-pages-in- asp.net-mvc.html

于 2013-08-07T11:27:03.243 回答