Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何跨应用程序整合ASP.NET母版页?_Asp.net_Master Pages - Fatal编程技术网

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

如何跨应用程序整合ASP.NET母版页?,asp.net,master-pages,Asp.net,Master Pages,第一次尝试在这些板上提出问题,希望我能得到一些帮助,如下所示: 我正在为我的客户启动.NET实践而工作。我们目前有5个小规模的.NET应用程序,其中一些已投入生产。它们大多是小型报告,具有一些数据输入/业务逻辑功能。每个应用程序当前都使用相同的母版页 我的意思是,每个应用程序中都有一份相同母版页的副本。它们都是基本的网站->WCF->BL->数据库分层应用程序。因此,我有4份相同母版页的副本,当我对其进行更改时,必须对其进行更改 客户不希望将所有这些整合到单个解决方案中。他们喜欢将应用程序跨站点

第一次尝试在这些板上提出问题,希望我能得到一些帮助,如下所示:

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

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

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

代码全部存储在Team Foundation服务器中。我们也不希望将母版页编译成.dll并部署它

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

提前谢谢

客户不想这样做 将所有这些整合到一个 解决方案他们喜欢分居 跨站点的应用程序。我就是不知道 想继续处理这个问题吗 常见问题的多次更新带来的麻烦 元素(将有许多 这些应用程序中的更多功能)

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

你排除了那里仅有的两个实物期权。母版页中的所有内容是什么?是否可以将HTML UI元素提取到单个模板或一系列模板HTML文件中,并将其动态导入母版页?然后,您可以将通用HTML重新定位到任意URL,并让每个应用程序的母版页动态地将其拉入

编辑:我撒谎了。您也可以使用类似Sharepoint的VirtualPathProvider将母版页存储在数据库或其他目录中,但请注意,VirtualPathProvider在MediumTrust环境中不起作用

请参阅:

您可能想看看


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

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

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

选择“添加现有项目…”

浏览到文件系统上的母版页,并选择.master和.master.cs文件

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

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

显然,如果您编辑了隐藏的代码,那么在将更改部署到这些站点之前,您需要重新编译其他项目


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

编辑:缺少css部分。显然,您将无法提供这些文件,因此这应该只适用于母版页

我不知道你的情况,所以

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

c:\inetpub\wwwroot\Application1
c:\inetpub\wwwroot\Application2
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引用母版页的单个副本。我用一个预编译的母版页对此进行了一次快速的尝试,以确保我可以超越我的根。您可能需要试一试。我们使用源代码管理在所有需要的地方创建指向共享文件的链接。因此,如果你在一个地方编辑,你只需要做一个“获取最新信息”,它就会出现在你链接的其他地方。

我最终选择了VPP路线。我创建了一个虚拟路径提供程序,并将我的母版页构建到一个DLL中,这是可行的。现在我遇到了一个巨大的问题,一个内容页面的母版页面通过codebehind后期绑定会抛出验证/格式错误,因为它认为它应该是一个备用页面。我的CNTRL+K,CNTRL+D在我现在共享母版页的每个页面上都已损坏。这对我和我的团队来说都是非常令人沮丧的

我最终选择了这条路线。我创建了一个虚拟路径提供程序,并将我的母版页构建到一个DLL中,这是可行的。现在我遇到了一个巨大的问题,一个内容页面的母版页面通过codebehind后期绑定会抛出验证/格式错误,因为它认为它应该是一个备用页面。我的CNTRL+K,CNTRL+D在我现在共享母版页的每个页面上都已损坏。这对我和团队来说都是非常令人沮丧的。谢谢你关于使用构建事件的建议,今天对我很有帮助。