2008-11-12 48 views

回答

3

在第一個想到的,我不認爲這是可能的,由於道路ASPX非預編譯..

但是,您可以創建一個從Page繼承的類,將它們放入一個DLL重使用代碼隱藏功能。當然,如果需要,這可以包含控制實例化邏輯,但是沒有設計人員可以使用(如果需要的話)。

+0

+1。未預編譯的ASPX是我在ASP.NET中遇到的最大問題。 – Randolpho 2009-07-21 20:07:47

2

這種方法的另一個難點是,如果不使用FindControl,您將無法直接訪問在ASP.NET頁面上創建的控件。

但是,一切都不會丟失。您可以選擇使用ASP.NET Web應用程序項目,而不使用ASP.NET網站。這使用了ASP.NET 1.1功能,它允許您進行基本的預編譯。

ASP.NET Web Application Project template in Visual Studio 2008 http://www.robpaveza.net/pub/aspnet-web-app.png

需要說明的是,當你將有預編譯到你的類的控件,你實際上不會存儲在您的DLL頁面上的內容。

另一種方法是使用網站發佈嚮導,它在部署之前執行自動ASP.NET編譯。但是,這會呈現一系列相當不可用的DLL;生成的內容對開發人員來說確實沒什麼意義(你會得到像ASP.my_homepage_aspx這樣的類),儘管這些類可用但會阻礙你的開發工作。

3

我的問題是,你爲什麼要這樣做?

如果是純粹的組織,那麼你的「簡單的文件夾」應該就夠了,所以你可能需要重新考慮你的項目結構。

如果是用於編譯目的,比如每次更改內容需要很長時間才能重新編譯網站,也許您可​​以將網站拆分爲多個站點項目,每個站點項目都作爲主站點的子站點運行。

這些將分別重新編譯。

如果這是一個組織性的事情,但與管理有關,因爲你有大量的代碼,很難得到解決,那麼也許你應該評估你建立網站的方式。 N層的aproach或ASP.NET MVC會提供更好的代碼分離嗎?

你覺得呢?...

+0

我們的應用程序分爲子模塊。業務邏輯被綁定到每個模塊的庫中,因此我們希望對與其關聯的視圖層具有相同的功能。我們正在使用ASP.NET MVC和區域。如果有完整的模塊分離會更清晰。謝謝你的想法。 – Odd 2008-11-12 22:48:15

3

你也可以實現一個VirtualPathProvider。我已經看到這樣做是爲了從一個zip文件提供文件,他們也可以從DLL中提取文件。

0

我認爲這是可能的,我已經在我的一個項目中將aspx文件放在類庫中。而在主項目的性質有一個選項生成事件那裏你可以把這樣的事情

if exist "$(TargetDir)WebForm1.aspx" move /Y "$(TargetDir)WebForm1.aspx" 
"$(ProjectDir)WebForm1.aspx" 
相關問題