C# 如何在.Net中使用包含
多年来,我们一直在办公室使用经典的ASP,现在正在向ASP.NET过渡。完成菜单的方式始终是使用“include”语句,并为菜单包含一个html文件(以及其他一些内容)。显然,使用.NET母版页是答案,但出现的问题是,当我们添加一个新项目时,它希望基本上与旧的经典ASP项目共享一个菜单。目前,我们为新项目使用母版页,当需要更改时,必须更新两个文件/菜单 我知道Response.WriteFile(),但根据文件夹结构,我无法让它工作(据我所知)。例如,我尝试在.NET母版页上使用以下内容访问经典菜单:C# 如何在.Net中使用包含,c#,html,asp.net,master-pages,C#,Html,Asp.net,Master Pages,多年来,我们一直在办公室使用经典的ASP,现在正在向ASP.NET过渡。完成菜单的方式始终是使用“include”语句,并为菜单包含一个html文件(以及其他一些内容)。显然,使用.NET母版页是答案,但出现的问题是,当我们添加一个新项目时,它希望基本上与旧的经典ASP项目共享一个菜单。目前,我们为新项目使用母版页,当需要更改时,必须更新两个文件/菜单 我知道Response.WriteFile(),但根据文件夹结构,我无法让它工作(据我所知)。例如,我尝试在.NET母版页上使用以下内容访问经典
<%
Response.WriteFile ("../menufolder/menu_body.htm");
%>
但这会“离开”.NET项目文件夹,我猜这就是问题所在。在文件夹结构方面,我是否缺少一些东西,或者有更好的解决方案,我们可以保留现有的html菜单并简单地“包含”它们,这样我们就不必维护两个单独的菜单
编辑:
回顾我的问题并考虑以下问题,是否有一种解决方案可以将htm文件“包含”为菜单,而不是使用Response.Write()更好地工作?(我仍然有兴趣了解响应。无论解决方案如何,都要编写文件夹结构)
菜单代码:
(当前“WebRoot”是从单独的包含文件设置的,但可以更改)
我对经典ASP知之甚少,但以下是我的两条建议:
- 如果要继续使用现有菜单,可以使用预构建步骤将菜单文件复制到新文件夹。以下是步骤:
- 打开ASP.NET项目李>
- 打开属性菜单李>
- 转到“构建事件”李>
- 这里有两个文本框,一个用于预构建事件,一个用于后构建事件。这些命令允许您定义要在生成开始之前或生成完成之后运行的特定命令行(如cmd.exe)。使用
语句,您可以使用其中一个将现有的menu_body.htm文件复制到ASPNETfolder。该语法与在cmd.exe中输入命令行语句时使用的语法相同。我将从以下语法开始:copy
复制“$(SolutionDir)…\menufolder\menu_body.htm”“$(SolutionDir)menu_body.htm”
此命令(未测试)应将文件复制到asp.net解决方案的根文件夹中。当您在预生成事件中输入它时,它会在生成项目之前执行此操作,如果您在后生成中执行此操作,它将在生成项目之后执行。您只需编辑经典ASP中的一个,它将在您构建ASP.NET项目时自动复制到新位置
- 第二个选项是使用ASP.NET菜单控件,它不是自动的,也不是可移植的,但我极力推荐它。ASP.NET菜单控件允许您对菜单进行更多控制,而无需担心div的位置。因为它是默认的ASP.NET,所以它与codebehind类完全集成。解释如何使用它 这样做的主要问题是,这意味着您无法重用现有的.htm文件。但是,您可以使用ASP.NET站点地图文件自动生成菜单,使其与您对网站所做的任何更改保持最新
../ClassicASPfolder/menufolder/menu_body.htm AND
../ClassicASPfolder/apps/ASPNETfolder/masterpage.aspx
<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>