2014-08-28 44 views
0

我的辦公室已經使用了經典的ASP多年,並正在轉換到ASP.NET。菜單完成的方式總是使用「include」語句,幷包含菜單的html文件(以及其他一些內容)。很顯然,.NET母版頁是答案,但出現的問題是當我們添加一個新項目,想要基本與舊的經典ASP項目共享一個菜單。目前,我們使用Master Pages作爲新項目,並且在需要更改時必須更新兩個文件/菜單。如何使用.Net包含的內容

我知道Response.WriteFile(),但我無法讓它基於文件夾結構工作(據我所知)。例如,我試圖用我的.NET母版頁以下訪問經典菜單:

<%   
    Response.WriteFile ("../menufolder/menu_body.htm"); 
%> 

與文件夾結構看起來像,例如,這樣的:

../ClassicASPfolder/menufolder/menu_body.htm AND 
../ClassicASPfolder/apps/ASPNETfolder/masterpage.aspx 

這「離開」.NET項目文件夾,我猜這就是問題所在。有沒有我在文件夾結構方面缺少的東西,或者更好的解決方案,我們可以保留現有的html菜單,並簡單地「包含」它們,這樣我們就不必維護兩個單獨的菜單了?

編輯:

回首我的問題,並考慮到XY Problem,有一個解決方案,「包括」 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> 
+0

你可以做的是一個postbuild操作,它將menu_body.htm文件複製到你的ASPNET文件夾中的一個位置。另外,你可以給你的menu_body文件的代碼?您可以使用asp:menu標籤作爲此菜單的更好替代品。 – Nzall 2014-08-28 14:10:53

+0

我添加了菜單代碼 - 我們使用VBScript從另一個包含文件中設置「WebRoot」,理想情況下我們可以保持原樣。如果不是,我知道還有其他方法可以做到這一點。你可以擴展「做一個後建設行動」嗎? – deebs 2014-08-28 14:29:28

+1

我會添加一個關於它的答案。編輯:其實,我誤解了如何使用經典的ASP。我談到的是使用傳統ASP項目的屬性窗口上的構建事件選項卡,並在那裏添加一個構建後步驟。這只是一個命令行界面,在項目建成後執行。但是,可以使用asp.net項目上的預生成操作來完成此操作。我會爲此做出回答。 – Nzall 2014-08-28 14:31:23

回答

1

我不知道很多關於經典的ASP,但這裏是我的2點建議:

  • 如果你想用你現有的菜單讓你可以使用預生成步驟複製菜單文件轉移到新文件夾。這些是步驟:

    1. 打開您的ASP.NET項目;
    2. 打開屬性菜單;
    3. 轉到「Build Events」;
    4. 這裏有兩個文本框,一個用於預生成事件,另一個用於後Buildevents。這些允許您定義在構建開始之前或構建完成之後運行的特定命令行(如在cmd.exe中)。您可以使用copy語句將其中一個複製到ASPNETfolder現有的menu_body.htm文件。語法與在cmd.exe中輸入命令行語句時使用的語法相同。我想這個語法開始:

    複製 「$(SolutionDir).... \ menufolder \ menu_body.htm」 「$(SolutionDir)menu_body.htm」

    此命令(未經測試)應將文件複製到您的asp.net解決方案的根文件夾。當您在預構建事件中輸入它時,它會在構建項目之前執行此操作,如果您在構建項目中執行此操作,則會在構建項目後執行此操作。您只需編輯經典ASP中的一個,並且每當您構建ASP.NET項目時,它都會自動複製到新位置。

  • 第二個選項不會自動化,不可移植,但是我最喜歡的就是使用ASP.NET菜單控件。 ASP.NET菜單控件允許您更好地控制菜單,而無需擔心分區位置。而且由於它是默認的ASP.NET,它完全集成了您的代碼隱藏類。 http://msdn.microsoft.com/en-us/library/ecs0x9w5(VS.80).aspx解釋如何使用它。

    這樣做的主要問題是它意味着你不能重用你現有的.htm文件。但是,您可以使用ASP.NET站點地圖文件自動生成菜單,並隨時更新您對網站所做的任何更改。

+0

asp:菜單選項很有趣,看起來很穩固,但使用我們的100多種菜單和當前結構,它將成爲大修改的方式。讓我看看Pre-Build事件選項並回復你。謝謝! – deebs 2014-08-28 15:07:00

+0

你可以讓你的項目生成一個網站地圖,並生成你的菜單,最後沒有太多的代碼需要。但事實上它可能是一場鬥爭。 – Nzall 2014-08-28 15:14:08