如何跨应用程序整合ASP.NET母版页?

时间:2009-01-23 21:38:03

标签: asp.net master-pages

首先在这些板上抛出一个问题,希望我能得到一些帮助,这里有:

我正在努力在我的客户端启动.NET实践。我们现在有5个小规模的.NET应用程序,其中一些已经投入生产。它们大多是小型报表,具有一些数据输入/业务逻辑功能。这些应用程序中的每一个当前都使用相同的母版页。

我的意思是每个应用程序中都有相同母版页的副本。它们都是基本的网站 - > WCF-> BL-> DB分层应用程序。因此,当我对其进行更改时,我需要更改相同母版页的4个副本。

客户不希望将所有这些整合到一个解决方案中。他们喜欢跨站点分离应用程序。我只是不想继续处理常见元素的多个更新的麻烦(这些应用程序中将会有更多更新)。

代码全部存储在团队基础服务器中。我们也不想将母版页编译成.dll并进行部署。

任何人都可以就如何在我的多个应用程序中维护这些公共文件(master,.css等)的单个副本提出一些建议。

提前致谢

6 个答案:

答案 0 :(得分:2)

您可能需要查看Sharing Master Pages in Visual Studio

如果没有帮助,那么您可以尝试在Visual Studio中使用Build Events。我会选择其中一个项目作为我的“主项目”,只编辑该项目的母版页。在构建项目时,它将运行一个命令,将该母版页(如果已更改)复制到您的设置位置。

答案 1 :(得分:0)

  

客户不想   将所有这些合并为一个单一的   解。他们喜欢分离   跨站点的应用程序我只是不喜欢   想继续处理   常见的多个更新的麻烦   元素(会有很多   更多这些应用程序)。

     

代码全部存储在团队中   基础服务器。我们也不想要   将母版页编译成dll   并部署它。

你消除了那里唯一的两个真实选择。主页中的内容是什么?是否可以将HTML UI元素提取到单个模板或一系列模板HTML文件中,并将它们动态导入母版页?然后,您可以将公共HTML重定位到任意URL,并让每个应用程序的母版页动态地将其拉入。

编辑:我骗了。您也可以像Sharepoint那样使用VirtualPathProvider将母版页存储在数据库或其他目录中,但要注意VirtualPathProviders在MediumTrust环境中不起作用。

请参阅:
http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx

答案 2 :(得分:0)

如果您使用的是Web应用程序(编译成dll)而不是网站,则可以执行以下操作:

右键单击要存储母版页的文件夹

选择“添加现有项目...”

浏览到文件系统的母版页,然后选择.master和.master.cs文件。

然后,不要单击“添加”按钮,而是单击“添加”右侧的小向下箭头,这将显示一个带有选项的小菜单:“添加”和“添加为链接”

选择“添加为链接”,这将引用项目中的文件,同时将其保留在开发环境中的原始位置 - 这允许您在任一应用程序中编辑它,同时在其他应用程序中保持最新

显然,如果您编辑后面的代码,则需要在将更改部署到这些站点之前重新编译其他项目。

这在网站项目中不可用,因为它们依赖于文件结构来计算项目中的内容。

答案 3 :(得分:0)

编辑:错过了css部分。显然,您将无法提供这些文件,因此这应仅适用于母版页。

不知道你的情况,所以

如果您可以控制应用程序的DNS /虚拟目录,则可以使用以下格式:

C:\的Inetpub \ wwwroot的\应用1
C:\的Inetpub \ wwwroot的\应用2
C:\的Inetpub \ wwwroot的\ Application3
C:\的Inetpub \ wwwroot的\ Application4
C:\的Inetpub \ wwwroot的\ Application5
并将您的主页面放在c:\ inetpub \ wwwroot \ master.Master,
C:\的Inetpub \ wwwroot的\ master.Master.cs,
C:\的Inetpub \ wwwroot的\ master.Master.cs.designer

然后,您可以从/../master.Master引用母版页的单个副本。我用预编译的母版页快速拍摄了这张照片,以确保我能够超越自己的视野。你可能不得不试一试。

答案 4 :(得分:0)

我们使用源代码控制在我们需要的所有位置创建指向共享文件的链接。因此,如果您在一个地方进行编辑,您只需要获取最新信息,它就会出现在您已将其链接到的其他地方。

答案 5 :(得分:0)

我最终选择了VPP路线。我创建了一个虚拟路径提供程序并将我的母版页构建到DLL中,这是有效的。现在我遇到了一个很大的问题,因为一个内容页面,即主页面通过代码隐藏抛出后期绑定验证/格式化hissy适合,因为它认为它应该是一个站在页面上。我的CNTRL + K,CNTRL + D在我现在正在共享我的母版页的每个页面上都打破了。这对我和团队来说非常有吸引力