我的辦公室已經使用了經典的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>
你可以做的是一個postbuild操作,它將menu_body.htm文件複製到你的ASPNET文件夾中的一個位置。另外,你可以給你的menu_body文件的代碼?您可以使用asp:menu標籤作爲此菜單的更好替代品。 – Nzall 2014-08-28 14:10:53
我添加了菜單代碼 - 我們使用VBScript從另一個包含文件中設置「WebRoot」,理想情況下我們可以保持原樣。如果不是,我知道還有其他方法可以做到這一點。你可以擴展「做一個後建設行動」嗎? – deebs 2014-08-28 14:29:28
我會添加一個關於它的答案。編輯:其實,我誤解了如何使用經典的ASP。我談到的是使用傳統ASP項目的屬性窗口上的構建事件選項卡,並在那裏添加一個構建後步驟。這只是一個命令行界面,在項目建成後執行。但是,可以使用asp.net項目上的預生成操作來完成此操作。我會爲此做出回答。 – Nzall 2014-08-28 14:31:23