2013-08-07 68 views
0

我有,我希望能够实现以下小型MVC Web项目:动态管理MVC布局

  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对象。如果未找到任何参数,则会检索具有与活动域匹配的域属性的页面布局对象。

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

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

    @ { Layout = ViewBag.Pagelayout.LayoutPath; } ...

是更好/清洁/更适当的机制,可用来实现我需要什么?

回答

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

+0

谢谢Nipun,博客在http:/ /codeofrob.com/entries/dynamically-switching-between-master-pages-in-asp.net-mvc.html非常有用。 – Neilski