动态母版页声明 - ASP.NET MVC

时间:2009-09-18 18:56:31

标签: asp.net-mvc themes

我正在尝试为我的asp.net mvc应用程序创建主题系统。

我能够创建自定义视图引擎和自定义控制器类来更改视图的输出方式。

我的问题是大师级。有没有办法做到这一点: 这是视图的@Page指令

<%@ Page Title="" Language="C#" 
MasterPageFile="<%= ViewData["myThemeFolder"] + "/Views/Shared/Site.Master"  %>" 
Inherits="System.Web.Mvc.ViewPage" %>

我试图这样做,但它不起作用。我想做到这一点,但不知道如何。

2 个答案:

答案 0 :(得分:0)

您需要做的是将MasterPageFile属性设置为“基础”主控,其上包含“标准”内容控件集。

然后从控制器中动态选择主控:

return View(viewName, masterName, modelObject);

你无法在View中处理这个问题,因为View的那部分没有任何关于ViewData是什么的线索等等。它几乎是一个预处理器指令。

无论如何,你可以做的是以下之一:

1)在基础控制器实现中添加一个ThemedView(或任何你想要调用的方法)方法,然后返回而不是View()来返回你的ViewResults。

2)创建自定义ActionFilterAttribute以动态交换母版页。

无论哪种方式,您都必须使用新方法或使用ActionFilterAttribute修饰内容。

答案 1 :(得分:0)

我最终使用样式表替换来进行主题化。我正在使用来自ThemeRoller的jQuery UI和相关主题。您可能想要考虑执行此操作或类似操作,以替换更改母版页。你可以在我的blog上找到更多关于我是如何做到这一点的信息,我在那里写了一个jQuery插件,我用它来让人们通过选择不同的主题样式表来改变主题。