簡體   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