是否有可能創建包含UserControls的類庫,以便我可以重用它們?如果是這樣,怎麼樣?是否使用.dll編譯標記?謝謝你的幫助!ASP.NET UserControl類庫
回答
更新:我是對我的提示,使用預編譯的用戶控件,你會在用戶控件。
有關如何一步步,看到Turning an .ascx User Control into a Redistributable Custom Control
無需任何。ascx文件在您將使用它的項目中,所以這與您正在查找的內容完全匹配。
用戶控件並不意味着跨站點可以重複使用,使用custom server controls代替。
您可以使用現有控件撰寫服務器控件,並將其設置爲全部,以便您可以通過CSS進行樣式設置。
如果您仍然在使用用戶控制方法,請嘗試Bob在答案中提到的內容。我沒有使用用戶控件,但我希望能夠像使用自定義服務器控件一樣使用該方法的輸出。
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls"%>
...
<aspSample:WelcomeLabel Text="Hello" NameForAnonymousUser="Guest"
ID="WelcomeLabel1" runat="server" BackColor="Wheat" ForeColor="SaddleBrown" />
Ps。如果這不起作用,他提供的鏈接會告訴您無論如何都要複製ascx文件,這樣就不會出現您要查找的內容,例如,如果不遵守自定義服務器控件,請嘗試上述&。
你可能會想看看Server Controls。 AFAIK您無法將用戶控件編譯爲單個DLL。
您可以編譯既UserControl
S和Page
s轉換類庫,因爲歸根結底,這是後您的網站是just in time編譯會發生什麼。該過程有一點涉及,因爲實際上UserControl
和Page
不適用於跨應用程序。
從MSDN:
的用戶控件使您能夠創建可在多個地方進行控制的應用程序或組織
http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx
的首選方法中使用的控制能力即將在各種應用程序中使用的方法是創建custom web server controls。
如果你真的想與UserControl
s到堅持,雖然,基本過程,以獲得此功能如下:
- 創建一個新的web application project。
- 開發可重複使用
UserControl
s。 - 將網站發佈爲不可更新*網站。 (取消選中「允許此站點可更新」)
將編譯後的庫從bin目錄和ascx文件中根據需要從發佈站點複製到新站點。
- 不可更新選項是將標記帶入程序集的東西。這是重要的一步。
是的,作爲點數四種狀態,你需要複製ASCX文件。該標記將包含在類庫中,並且ascx實際上將是空的。沒有辦法避免這種情況(除非你使用custom web server controls),因爲UserControl
s通過它們的文件名被添加到Page
s。
所有這一切更詳細了,在MSDN文檔,
如果我們在談論網絡形式,答案是否定的。標記(.ascx文件內容)不會編譯到dll中。 ASP.NET引擎希望在Web應用程序中查找文件系統中的該文件。所以不可能創建一個你可以簡單地重新分配或共享的DLL。
如果您想要創建可以跨Web應用程序共享的控件,您可以改爲創建自定義控件,但是必須在.net代碼中編寫HTML代碼(優先使用合適的類代替任務只是在文本中創建html),如果控件很大,可能會變得非常難看。
就我個人而言,我認爲這是非常煩人的。我認爲,如果你使用ASP.NET MVC,有一些可能性(取決於你的視圖引擎),但我沒有太多的MVC經驗。
這聽起來像自定義服務器控件是你在找什麼。
如果你的控件是其他服務器控件的組合(例如文本框和日期控件的按鈕),那麼你可以看看CompositeDataBoundControl和CompositeControl--這些是處理這種事情的方便方法。
但是,要注意,頁面循環/視圖狀態重新水合的工作方式很容易混淆。由於對它應該如何工作的細微誤解,我已經在這方面花費了相當多的時間。
http://aspnetresources.com/blog/composite_databound_control.aspx
您可以從一個DLL服務的用戶控件。你只需要創建一個自定義的VirtualPathProvider來加載控件。這基本上是SharePoint所做的。
下面是來自微軟的文章,介紹了該過程:
http://support.microsoft.com/kb/910441
您也可以「的VirtualPathProvider」做搜索。
本示例從數據庫加載代碼,但您可以對其進行修改以將程序集中的代碼作爲嵌入式資源加載。我們在我的公司這樣做是爲了跨許多網站和應用程序域共享一個母版頁。
然而,一個警告。這在中等信任環境中不起作用。因此,如果您計劃將其部署到共享主機環境,請確保對主機進行測試,以確定它是否會首先運行。
- 1. 從數據庫生成ASP.NET UserControl
- 2. asp.net usercontrol SetFocusOnError
- 3. ASP.NET Usercontrol + Javascript
- 4. ASP.NET UserControl OnError
- 5. asp.net mvc usercontrol viewdata
- 6. asp.net中的usercontrol
- 7. ASP.NET UserControl幫助
- 8. 未定義ASP.NET UserControl?
- 9. modalpopupextender asp.net usercontrol頁面
- 10. Asp.Net MVC MasterPage UserControl UpdateModel
- 11. asp.net多個updatepanel usercontrol
- 12. asp.net,editItemTemplate中的userControl
- 13. ASP.NET類庫
- 14. asp.net usercontrol vs customcontrol vs stringbuilder
- 15. asp.net中usercontrol的優缺點
- 16. asp.net usercontrol奇怪的行爲
- 17. ASP.net UserControl參數傳遞
- 18. ASP.NET MVC UserControl需要css/javascript
- 19. asp.net usercontrol開發/實現
- 20. UserControl的基類屬於哪一層?
- 21. UserControl屬性類型爲
- 22. 引用ASP.NET核心類庫
- 23. ASP.net mvc共享類庫
- 24. 在asp.net中創建類庫
- 25. asp.net加載文件類庫
- 26. 在類庫與ASP.NET MVC 3
- 27. ASP.NET以編程方式獲取UserControl VirtualPath
- 28. 使用Asp.Net UserControl作爲SharePoint WebPart
- 29. 如何在asp.net中訪問usercontrol的值
- 30. 在ASP.NET的UserControl中註冊JavaScript
@Mike C.添加了我的答案更新,檢查出來。 – eglasius 2009-11-27 17:05:17