[英]How to use an Include with .Net
我们已经在我的办公室使用经典的ASP多年,并且正在过渡到ASP.NET。 菜单的完成方式始终是使用“ include”语句,并包括菜单的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问题 ,是否有解决方案可以将“ 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>
我对Classic ASP不太了解,但是我有2条建议:
如果要继续使用现有菜单,则可以使用预构建步骤将菜单文件复制到新文件夹中。 这些是步骤:
copy
语句使用其中之一将现有的menu_body.htm文件复制到ASPNETfolder。 语法与在cmd.exe中输入命令行语句时使用的语法相同。 我将从以下语法开始: 复制“ $(SolutionDir).... \\ menufolder \\ menu_body.htm”“ $(SolutionDir)menu_body.htm”
此命令(未经测试)应将文件复制到asp.net解决方案的根文件夹。 当您在构建前事件中输入它时,它将在构建项目之前执行此操作;如果在后构建中进行,则将在构建项目之后执行。 您只需要从经典ASP中编辑一个代码,并且在您构建ASP.NET项目时,它将自动复制到新位置。
第二个选项是使用ASP.NET菜单控件,它不是自动的并且不是可移植的,但是我衷心推荐。 ASP.NET菜单控件使您可以更好地控制菜单,而不必担心div的位置。 并且由于它是默认的ASP.NET,因此它与您的codebehind类完全集成。 http://msdn.microsoft.com/zh-cn/library/ecs0x9w5(VS.80).aspx说明了如何使用它。
这样做的主要问题是,这意味着您无法重用现有的.htm文件。 但是,您可以使用ASP.NET站点地图文件自动生成菜单,并使其与您对网站所做的任何更改保持同步。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.