我正在开发一个自定义视图引擎,用于实现我的asp.net mvc 2 web应用程序的主题。我面临的问题是在这个函数中:
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
参数“masterName”始终为空,尽管viewName不为空且该视图具有与之关联的母版页。
我想知道母版页,因此我可以使用默认主题并允许创建仅更改主页但不更改内容页的主题。因此,当选择主题时,我想使用主题的母版页,但是使用默认主题的内容页面。但是我也希望能够创建覆盖母版页和一些内容页面的主题,而不是其他一些内容页面。为此,我只需要页面正在使用的masterName,但我收到一个空字符串:(
你有什么想法吗?
提前致谢! 涓
答案 0 :(得分:1)
参数“masterName”是可选的。默认情况下,视图将使用View中定义的母版页,但如果指定了paraeter,它将使用提供的mast页面覆盖它。
例如:
Return View("viewname", Model); // uses default master page
Return View("viewname", Model, "MasterName"); // users supplied MasterName
因此,一种解决方案是将主名称值留空,除非被所选主题覆盖,然后才在View调用中覆盖它。这不需要自定义视图引擎