2010-10-11 93 views
1

我开发了一个自定义视图引擎,用于实现我的asp.net mvc 2 web应用程序的主题。我现在面临的问题是,在这个函数:ASP.NET MVC 2自定义视图引擎

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 

参数“masterName”始终是空的,虽然的viewName不是空的,这一观点具有关联母版页。

我想知道母版页,所以我可以有一个默认的主题,并允许创建一个只改变主页而不是内容页的主题。所以当一个主题被选中时,我想使用主题的主页但是默认主题的内容页面。但我也希望能够创建覆盖母版页和一些内容页的主题,而不是其他的。在此,我只需要在页面使用masterName,但是我收到一个空字符串:(

你有什么想法?

提前感谢! 胡安

回答

1

参数“masterName “是可选的默认视图将使用在视图中定义的母版页,但如果指定了paraeter它将覆盖这与提供的桅杆页面

例如:。

Return View("viewname", Model); // uses default master page 
Return View("viewname", Model, "MasterName"); // users supplied MasterName 

因此,一种解决方案是将主名称值留空,除非被选定的主题覆盖,只有在View调用中覆盖它。这不需要自定义视图引擎

+0

因为我想改变一些页面,具体取决于他们我需要一个自定义视图引擎。有什么方法可以获取在视图中定义的主页名称? – Juan 2010-10-12 12:22:12

+0

它不是可用的东西,除非您深入研究Render方法中的WebFormViewEngine。除非被覆盖,否则通常不需要。 – Clicktricity 2010-10-12 15:30:47