有没有办法从当前应用程序外部加载母版页?

时间:2010-12-10 19:55:11

标签: asp.net master-pages

我正在为多个应用程序在同一台服务器上运行的环境进行原型设计,但它们共享一个母版页。

是否可以从其他应用程序加载母版页?在我的一个应用程序中,我有这个代码:

    protected override void OnPreInit(EventArgs e)
    {
        base.OnPreInit(e);
        this.MasterPageFile = "~/../MasterPages/Root.master";
    }

这样做是将母版页设置为当前应用程序之外的文件。 (注意代字号后面的“..” - 所以我要去当前应用程序的根目录,然后加紧目录以查找母版页。)

ASP对此感到不满:

The virtual path '/MasterPages/Root.master' maps to another application, which is not allowed.

我理解可能会因为没有支持类这一事实而感到压力,但如果我在代码隐藏中没有任何内容,并且我选择不从任何东西继承我的母版页 - 那么整个东西包含在“.master”文件中?

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:4)

您可以考虑将虚拟目录映射到您的应用程序文件夹结构中,然后该目录可以同时映射到多个应用程序。

答案 1 :(得分:1)

只考虑袖口,但如果在每个映射到同一物理目录的应用程序下创建虚拟目录会怎样:

 protected override void OnPreInit(EventArgs e)
 {
        base.OnPreInit(e);
        this.MasterPageFile = "~/MasterPages/Root.master";
 }

所以你可能有一个物理布局:

  

C:\的Inetpub \ wwwroot的\ MasterPages
  C:\的Inetpub \ wwwroot的\应用1
  c:\ inetpub \ wwwroot \ App2

然后您将IIS设置为:

  

根\ App1的
  根\ App1的\ MasterPages
  根\应用2
  根\ App2的\ MasterPages

答案 2 :(得分:0)

我们的母版非常通用。每个母版页都会使用WebRequest来捕获我们常见的马蹄形html(或.aspx)页面。

这种方法最难的是我们不得不在马蹄铁上放置标记。这些标记将指示应用程序可以替换的内容以及放置其内容的位置。