使用MasterPageFile的独立库中的母版页?

时间:2014-07-05 09:39:12

标签: asp.net webforms master-pages

有没有办法从单独的库中指定MasterPage以用作基本模板?我在下面试过,但它说它找不到路径(这很明显,因为它是命名空间):

<%@ Master Language="C#" MasterPageFile="MyClassLib.Templates.Base.master" %>

我正在尝试嵌套MasterPages,但对于基本MasterPage,我希望将其存放在单独的类库中以便于分发。然后在目标Web应用程序上,我希望它们能够从DLL中的基本MasterPage下载。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

  

我在下面试过,但它说找不到路径(这是真的,因为它是命名空间)

那是你的问题。 MasterPagePath应该是物理.master 文件的虚拟路径 - 您不能将命名空间和文件路径混合在一起并期望它们能够正常工作。

有几种方法可以做你正在做的事情。第一种是简单地在需要它的所有应用程序中分发相同的母版页文件。这可能会引起你的重复,但事实上,它可能比替代品更清晰,更易于管理。应该只有几个重复,否则我会质疑为什么你需要在很多不同的地方使用相同的母版页(也许你的解决方案架构可能是潜在的问题)。

或者,您可以使用虚拟路径从不同的Web项目引用母版页,并将其指定为父页面。

要实现您真正想要的,您需要将主页面嵌入DLL中,然后创建VirtualPathProvider以定位嵌入式资源,就像它是虚拟路径上的物理资源一样。这是here的教程。但是,我会注意到提到的缺点(缺乏对设计器视图的支持以及无法在Page指令中设置母版页)。

一般来说,我认为你不应该真的需要这样做,而且我会 - 如果可能的话 - 寻找你的解决方案架构,这样你就不需要了。