繁体   English   中英

如何在.Net中使用包含

[英]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条建议:

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

    1. 打开您的ASP.NET项目;
    2. 打开属性菜单;
    3. 转到“构建事件”;
    4. 您在这里有2个文本框,一个用于构建前事件,一个用于构建后事件。 这些允许您定义特定的命令行(例如cmd.exe中的命令行),以在构建开始之前或构建完成之后运行。 您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM