2008-08-26 81 views
14

假設您在IIS中有2個不同的ASP.NET應用程序。此外,您還有一些ASCX控件需要在這兩個應用程序中共享。跨不同網站應用程序共享ASP.NET .ascx控件的最佳方法?

什麼是創建「用戶控件庫」的最佳方式,以便您可以在2個應用程序中使用相同的控件實現,而不必重複代碼?

控件的ASCX後面帶有HTML +代碼。


複合控制將很困難,因爲我們與使用ASCX文件中的HTML語法對控件進行樣式設計的設計師合作。

Tundey,我們在這裏使用SVN。你有沒有關於如何實施你的建議的例子? SVN如何共享ASP.NET控件?

謝謝!

回答

5

如果您希望能夠在單獨的項目中使用它們,您將需要創建複合控件而不是.ASCX控件。

1

另一種方法是使用源代碼管理工具在您的web應用程序之間「共享」ASCX控件。這將允許您對任一應用程序中的控件進行更改,並使源代碼控制確保更改反映在我們的Web應用程序中。

0

我在此處使用StarTeam,它允許您跨多個文件夾「共享」對象(文件,更改請求,要求等)。不確定Subversion(SVN)是否具有該功能。如果不是,則可以使用另一個技巧:從控件的主要位置到其他項目中的某個位置創建一個連接。聯結就像一個Unix符號鏈接。您可以下載該工具從here

0

在Windows創建路口我已經在ASP.Net控件發現最大的問題是,你不能很容易地得到兩個使用控制樓宇控制設計器支持在你建立它的網站上。我能做到的唯一方法是創建一個沒有代碼隱藏的.ascx控件(即:所有服務器端代碼都在帶有runat =「server」屬性的.ascx文件中的腳本標記中) 。

但即使如此,您仍然需要複製.ascx文件,因此如果您需要進行更改,那意味着在您使用它的每個位置更新文件。所以是的,確保它在源代碼控制中。

1

我設法做到這一點,首先犧牲了一些輕鬆構建控件。

您可以創建一個控件庫項目,爲您生成一個控件庫DLL。缺點是您必須僅使用代碼創建控件。在我上一個項目中,這很好。在更復雜的控制中,這可能是一個問題。

這裏有一個例子:

你把在Text屬性
<DefaultProperty("Text"), ToolboxData("<{0}:BreadCrumb runat=server />")> _ 
Public Class BreadCrumb 
    WebControl 

    <Bindable(True)> _ 
    Property Text() As String 
     '...' 
    End Property 

    Protected Overrides Sub RenderContents(output as HtmlTextWriter) 
     output.write(Text) 
    End Sub 

    Private Sub Page_Load(...) Handles MyBase.Load 
     ' Setup your breadcrumb and store the HTML output ' 
     ' in the Text property ' 
    End Sub 
End Class 

的東西都會被渲染。

然後,您在此處放入的任何控件都可以像您使用的任何其他控件一樣運行。只需將它導入到您的工具箱中,製作您的註冊參考,然後將其放到ASP頁面上。

15

Scott Guthrie在這裏提供了一些關於如何設置用戶控件庫項目的建議,然後使用預生成事件將用戶控件複製到多個項目中。它工作得很好。

http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx

+0

我看了一些這些解決方案,這是迄今爲止最簡單的,如果你有現有的用戶控件在網站之間共享。 – 2011-03-04 12:12:40

0

最近我從一個Web應用程序(ASPX,碩士和ASCX),只是引用的文件,Web應用程序(共約90)沒有太大的問題的。也就是說,我使用了大量修改版本的MVP pattern,很多接口和約定保持複雜性,同一個中間層和一個站點是另一個的子集。

大問題:

  1. 母版頁(進而設計師和HTML視圖格式),這樣你失去了很多功能都不能在引用的文件工作。預構建步驟和很多svn:忽略條目是我的破解。讓CruiseControl.NET獲得預構建任務在正確的文件夾中執行也是一件痛苦的事情。
  2. 共享頁面/控件需要非常瞭解它們的接觸和引用,以避免引入額外的依賴關係。
  3. 兩個站點都鎖定在一起進行部署。
  4. 我現在不得不祈禱維護者閱讀我關於我所做的一團糟的小小文檔。這遠遠超出了我在ASP.NET項目中看到的。

我受到巨大的時間壓力才能使其運行,它現在和現在都在生產應用程序。我不會推薦它,但如果你有興趣開始:

添加現有項,選擇一些文件,點擊添加按鈕的箭頭並說添加爲鏈接

2

除了什麼Tundey說,NTFS鏈接外殼擴展是有幫助的,當談到另有獨立項目之間共享內容的很大一部分(例如:用的.ascx /的.aspx文件夾)。在代碼的情況下,我認爲從VCS製作另一個工作副本是可取的。

0

我有一個suggestion.WE可以通過創建網站項目中的用戶控件使用用戶控制整個倍數應用程序normally.Then更改網站屬性中使用固定命名和單頁組件那麼我們可以將用戶控件dll用於多個應用程序。

相關問題