我在我的網站上有很多頁面,我試圖想出一個很好的方式來將這些區域分開,這些區域比我的基本web項目下的簡單目錄更加孤立。有沒有辦法將我的網頁表單放入單獨的類庫中?如果是這樣,它是如何完成的?有沒有辦法將aspx文件放入Visual Studio 2008 .NET 3.5中的類庫中?
在此先感謝。
我在我的網站上有很多頁面,我試圖想出一個很好的方式來將這些區域分開,這些區域比我的基本web項目下的簡單目錄更加孤立。有沒有辦法將我的網頁表單放入單獨的類庫中?如果是這樣,它是如何完成的?有沒有辦法將aspx文件放入Visual Studio 2008 .NET 3.5中的類庫中?
在此先感謝。
在第一個想到的,我不認爲這是可能的,由於道路ASPX非預編譯..
但是,您可以創建一個從Page
繼承的類,將它們放入一個DLL重使用代碼隱藏功能。當然,如果需要,這可以包含控制實例化邏輯,但是沒有設計人員可以使用(如果需要的話)。
這種方法的另一個難點是,如果不使用FindControl,您將無法直接訪問在ASP.NET頁面上創建的控件。
但是,一切都不會丟失。您可以選擇使用ASP.NET Web應用程序項目,而不使用ASP.NET網站。這使用了ASP.NET 1.1功能,它允許您進行基本的預編譯。
需要說明的是,當你將有預編譯到你的類的控件,你實際上不會存儲在您的DLL頁面上的內容。
另一種方法是使用網站發佈嚮導,它在部署之前執行自動ASP.NET編譯。但是,這會呈現一系列相當不可用的DLL;生成的內容對開發人員來說確實沒什麼意義(你會得到像ASP.my_homepage_aspx這樣的類),儘管這些類可用但會阻礙你的開發工作。
我的問題是,你爲什麼要這樣做?
如果是純粹的組織,那麼你的「簡單的文件夾」應該就夠了,所以你可能需要重新考慮你的項目結構。
如果是用於編譯目的,比如每次更改內容需要很長時間才能重新編譯網站,也許您可以將網站拆分爲多個站點項目,每個站點項目都作爲主站點的子站點運行。
這些將分別重新編譯。
如果這是一個組織性的事情,但與管理有關,因爲你有大量的代碼,很難得到解決,那麼也許你應該評估你建立網站的方式。 N層的aproach或ASP.NET MVC會提供更好的代碼分離嗎?
你覺得呢?...
我們的應用程序分爲子模塊。業務邏輯被綁定到每個模塊的庫中,因此我們希望對與其關聯的視圖層具有相同的功能。我們正在使用ASP.NET MVC和區域。如果有完整的模塊分離會更清晰。謝謝你的想法。 – Odd 2008-11-12 22:48:15
你也可以實現一個VirtualPathProvider。我已經看到這樣做是爲了從一個zip文件提供文件,他們也可以從DLL中提取文件。
我認爲這是可能的,我已經在我的一個項目中將aspx文件放在類庫中。而在主項目的性質有一個選項生成事件那裏你可以把這樣的事情
if exist "$(TargetDir)WebForm1.aspx" move /Y "$(TargetDir)WebForm1.aspx"
"$(ProjectDir)WebForm1.aspx"
+1。未預編譯的ASPX是我在ASP.NET中遇到的最大問題。 – Randolpho 2009-07-21 20:07:47