我有一个小型MVC网络项目,我希望能够实现以下目标:
为了帮助实现这一目标,我创建了一个具有以下属性的布局对象:
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
在这种情况下,将检索带有Reference“tech”的Pagelayout对象。如果未找到任何参数,则将检索具有与活动域匹配的Domain属性的Page Layout对象。
关于实施此方法的正确方法,我有几个问题:
如何为每个页面提供Pagelayout数据。我考虑创建一个自定义Controller,然后将其添加到ViewBag(来自Session),因此主视图可以实现如下所示:
@ { Layout = ViewBag.Pagelayout.LayoutPath; } ...
更好/更清洁/更合适的机制是否可用于实现我的需求?
答案 0 :(得分: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