我有,我希望能够实现以下小型MVC Web项目:动态管理MVC布局
- 选择基于活动域的基本页面布局和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对象。如果未找到任何参数,则会检索具有与活动域匹配的域属性的页面布局对象。
我有一个关于实现这个正确的方法几个问题:
- 哪里是实现MVC这种逻辑的最佳地点? Global.asax中的Session_Start方法似乎是潜在的候选人
- 我想在整个会话中保存检索到的PageLayout对象。我打算通过某种管理类将它添加到会话状态。
如何使页面布局数据可用于每个页面。我想创建一个自定义控制器,然后将其添加到ViewBag(从会话),所以主视图可以实现类似以下内容:
@ { Layout = ViewBag.Pagelayout.LayoutPath; } ...
是更好/清洁/更适当的机制,可用来实现我需要什么?
谢谢Nipun,博客在http:/ /codeofrob.com/entries/dynamically-switching-between-master-pages-in-asp.net-mvc.html非常有用。 – Neilski