如何将Include与.Net一起使用

本文关键字:一起 Net Include | 更新日期: 2023-09-27 18:19:41

多年来,我们一直在办公室使用经典的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()分离的菜单,效果更好?(我仍然有兴趣了解响应。无论解决方案如何,都要编写文件夹结构)

菜单代码:("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>

如何将Include与.Net一起使用

我对经典ASP了解不多,但以下是我的两个建议:

  • 如果您想继续使用现有菜单,可以使用预构建步骤将菜单文件复制到新文件夹中。以下是步骤:

    1. 打开您的ASP.NET项目
    2. 打开属性菜单
    3. 转到"构建事件"
    4. 这里有两个文本框,一个用于预生成事件,另一个用于后生成事件。这些命令允许您定义要在生成开始前或生成完成后运行的特定命令行(如cmd.exe中的命令行)。您可以使用其中一个来使用copy语句将现有的menu_body.htm文件复制到ASPNET文件夹中。语法与在cmd.exe中输入命令行语句时使用的语法相同。我将从以下语法开始:

    copy"$(SolutionDir)….''menufolder''menu_body.htm"$(olutionDir)menu_body.htm

    此命令(未测试)应将文件复制到asp.net解决方案的根文件夹中。当您在预生成事件中输入它时,它会在生成项目之前执行此操作;如果您在后生成中执行此操作,它将在生成项目之后执行。您只需要编辑经典ASP中的一个,每当您构建ASP.NET项目时,它将自动复制到新位置。

  • 第二个选项是使用ASP.NET菜单控件,它不是自动的,也不可移植,但我强烈建议使用它。ASP.NET菜单控件允许您对菜单进行更多的控制,而不必担心div的位置。因为它是默认的ASP.NET,所以它与您的codeehind类完全集成。http://msdn.microsoft.com/en-us/library/ecs0x9w5(VS.80).aspx解释如何使用它。

    这方面的主要问题是,这意味着您不能重用现有的.htm文件。但是,您可以使用ASP.NET站点地图文件自动生成菜单,使其与您对网站所做的任何更改保持同步。