那它真的取決於你的要求。大多數情況下,我只是使用WebPart作爲包裝來動態加載我的UserControls(它們在不同的項目中,但在相同的解決方案中)。如果你需要更多的「靜態」,我建議使用應用程序頁面而不是WebPart。
我會嘗試用一個例子來解釋一下:
比方說,你想創建一個解決方案,幫助您的項目經理做他們的工作(哈哈:-)。你會稱這個應用程序像「PM應用程序」。它由三部分組成:問題跟蹤器,時間跟蹤器和報告應用程序。
顯然,第一步是創建一個名爲「PM應用程序」的空白解決方案。由於該解決方案的所有三個部分都有相同之處,例如記錄器組件或DataAccessLayer,您將創建一個名爲「Common」的新項目。
然後它真的取決於您的解決方案設計。比方說,我們去一個WebPart/UserControl解決方案。您創建一個名爲「SP PM」的新項目,這是一個SharePoint項目(實際上,我還沒有找到適合此項目的名稱)。然後,爲解決方案的每個部分創建WebPart(IssueTrackerWebPart等)。現在,如果每個WebPart只有一個UserControl,那麼容易。 WebPart基本上充當您的UserControls的包裝。
如果你(想)有多個用戶控件,它會變得非常棘手。我總是最終創建一個名爲「UserControls」的新ASP.NET WebApplication項目,並在那裏添加我的UserControls。這樣做的問題是引用「SP PM」項目中的UserControls。 引用dll的沒有問題,另一方面引用.ascx文件是。
我所做的是將我的「UserControls」項目中的.ascx文件複製到帶有後期構建腳本的「SP PM」項目中。我知道這絕對不是最好的解決方案,但是我已經和其他許多開發者討論過這個問題,但是到現在爲止還沒有人找到更好的解決方案。
這是SharePoint環境中的一個非常棘手的問題(就像其他任何其他實際情況一樣),並且據我所知沒有任何最佳實踐。最好的做法是與你的開發人員一起坐下來,問他們如何創建解決方案/項目結構,然後找到一個好的中間路線。
tl;博士沒有「通用」的方式 - 真的取決於您的要求。
我趕緊把解決togther如何,我認爲它應該是:
希望這是任何意義上的你,隨時問,如果您有任何進一步的問題。另外我想聽聽一些關於其他人如何解決這些問題的意見:-)
當然。 2.)我認爲這種方式與你對#1的回答一致。我試圖從維護和部署的角度來決定什麼是最好的。如果我有application1(這是一個帶有字段的表單,人們將它們填寫出來然後發送給電子郵件)和application2,這是一個人們可以訪問的數據電子表格。這兩個不同的WebParts,不同的用戶控件,不同的項目?我認爲我迷失於Web部件和用戶控件之間的命名和概念區別。另外,在一個特定項目中是否應該有多個webpart? – gcoleman0828
#3就像數據訪問層一樣。在哪裏可以說我做了一個Messenger類。所有這個類都處理電子郵件請求。我不想重複我的努力並將其複製到每個Web部件項目中。我寧願有一個擁有所有泛型類的庫,並讓我的webparts引用它們。這是否更有意義?如果是這樣,我該怎麼做,你有什麼教程如何做到這一點。我們在前些日子嘗試過,並試圖訪問該庫時出現各種錯誤。 – gcoleman0828
我已經更新了我的答案 – int32