[英]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條建議:
如果要繼續使用現有菜單,則可以使用預構建步驟將菜單文件復制到新文件夾中。 這些是步驟:
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.