【发布时间】:2014-08-28 13:51:24
【问题描述】:
多年来,我们一直在我的办公室使用经典的 ASP,并且正在过渡到 ASP.NET。完成菜单的方式总是使用“包含”语句,并为菜单包含一个 html 文件(以及其他一些东西)。显然,使用 .NET 母版页是答案,但出现的问题是当我们添加一个新项目时,它希望基本上与旧的经典 ASP 项目共享一个菜单。目前我们为新项目使用母版页,并且在需要更改时必须更新两个文件/菜单。
我知道 Response.WriteFile() 但我无法根据文件夹结构使其工作(据我所知)。例如,我尝试在我的 .NET 母版页上使用以下内容来访问经典菜单:
<%
Response.WriteFile ("../menufolder/menu_body.htm");
%>
文件夹结构如下所示:
../ClassicASPfolder/menufolder/menu_body.htm AND
../ClassicASPfolder/apps/ASPNETfolder/masterpage.aspx
不过,这“离开”了 .NET 项目文件夹,我猜这就是问题所在。关于文件夹结构,我是否缺少一些东西,或者更好的解决方案,我们可以保留现有的 html 菜单并简单地“包含”它们,这样我们就不必维护两个单独的菜单?
编辑:
回顾我的问题并考虑XY Problem,是否有一种解决方案可以将htm 文件“包含”为与使用Response.Write() 分开的菜单,效果更好? (无论解决方案如何,我仍然有兴趣了解 Response.Write 文件夹结构)
菜单代码: (“WebRoot”当前是从单独的包含文件中设置的,但可以更改)
<div id="MenuContent">
<div id="Wrapper">
<div id="Menu">
<a id="1" href="<%=WebRoot%>/home.asp">Home</a>
<a id="2" href="<%=WebRoot%>/directory.asp">Directory</a>
<a id="3" href="<%=WebRoot%>/faq.asp">FAQ</a>
<a id="4" href="<%=WebRoot%>/information.asp">Information</a>
</div>
</div>
</div>
【问题讨论】:
-
您可以做的是将 menu_body.htm 文件复制到 ASPNET 文件夹中的某个位置的构建后操作。另外,你能给出你的 menu_body 文件的代码吗?您也许可以使用 asp:menu 标签作为此菜单的更好替代品。
-
我添加了菜单代码 - 我们使用 VBScript 从另一个包含文件设置“WebRoot”,理想情况下我们可以保持原样。如果没有,我知道还有其他方法可以做到这一点。你能扩展一下“做一个构建后的动作”吗?
-
我会添加一个关于它的答案。编辑:实际上,我弄错了如何使用经典的 asp。我谈到的是使用经典 ASP 项目的“属性”窗口上的“构建事件”选项卡,并在那里添加一个构建后步骤。这只是一个在项目构建后执行的命令行界面。但是,可以通过对 asp.net 项目的预构建操作来执行此操作。我会回答的。
标签: c# html asp.net master-pages