2010-12-10 79 views
3

我正在对多个应用程序在同一台服务器上运行的环境进行原型设计,但它们都共享一个母版页。有没有办法从当前应用程序之外加载母版页?

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

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”文件中?

有没有办法做到这一点?

回答

1

只是在想套的,但如果你创建映射到同一物理目录中的每个应用程序的虚拟目录下:

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

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

C:\的Inetpub \ wwwroot的\ MasterPages
C:\的Inetpub \ wwwroot的\ App1的
C:\的Inetpub \ wwwroot的\ App2的

你会再有IIS设置,如:

根\应用1
根\应用1 \ MasterPages
根\应用2
根\应用2 \ MasterPages

+0

两个答案都是正确的。严格标记这一点是为了反应的深度。 – Deane 2010-12-15 16:23:19

3

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

0

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

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

+0

我已经尝试了你的建议。这对我们来说是巨大的痛苦。 – Deane 2010-12-15 15:23:48

+0

这对我们来说是一个很大的痛苦,但是一旦我们把这个过程放在适当的位置,它就可以添加/更新应用程序。由于我们的马蹄具有强制性的外观和感觉,它可能是最好的方式,(作为应用程序开发人员,您不必担心创建马蹄铁,如果它符合要求)。 – Lareau 2010-12-15 17:37:31

相关问题