假设您在IIS中有2个不同的ASP.NET应用程序。此外,您还要在这两个应用程序中共享一些ASCX控件。
创建“用户控件库”的最佳方法是什么,这样您就可以在2个应用程序中使用相同的控件实现,而不必重复代码?
控件的ASCX背后有HTML +代码。
复合控件很难,因为我们与使用ASCX文件中的HTML语法的设计师合作来设置控件的样式。
Tundey,我们在这里使用SVN。你有一个如何实施你的建议的例子吗? SVN如何共享ASP.NET控件?
谢谢!
答案 0 :(得分:15)
http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx
答案 1 :(得分:5)
如果您希望能够在单独的项目中使用它们,则需要创建复合控件而不是.ASCX控件。
答案 2 :(得分:2)
除了Tundey所说的, NTFS Link shell扩展在其他独立项目之间共享大量内容(例如:.ascx / .aspx的文件夹)时非常有用。在代码的情况下,我认为从VCS制作另一个工作副本是可取的。
答案 3 :(得分:2)
答案 4 :(得分:1)
另一种方法是使用源代码管理工具在您的Web应用程序之间“共享”ASCX控件。这将允许您对任一应用程序中的控件进行更改,并让源代码控制确保更改反映在我们的Web应用程序中。
答案 5 :(得分:1)
我设法通过牺牲一些构建控件的方便性来实现这一点。
您可以创建一个控件库项目,为您生成一个控件库DLL。缺点是您必须仅使用代码创建控件。在我的上一个项目中,这很好。在更复杂的控件中,这可能是一个问题。
以下是一个例子:
<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
您将在Text属性中放置任何内容。
然后,您放在此处的任何控件都可以像您使用的任何其他控件一样运行。只需将其导入您的工具箱,进行注册参考,然后将其放到ASP页面上。
答案 6 :(得分:0)
我在这里使用StarTeam,它允许您跨多个文件夹“共享”对象(文件,更改请求,要求等)。不确定Subversion(SVN)是否具有该功能。如果没有,这是您可以使用的另一个技巧:创建从控件的主要位置到其他项目中的位置的联结。结点就像Unix符号链接。您可以从here
下载用于在Windows中创建联结的工具答案 7 :(得分:0)
我注意到ASP.Net中的控件最大的问题是,一旦构建了控件,就无法轻松获得设计器支持在站点中使用控件构建控件和。我能够做到的唯一方法是创建一个没有代码隐藏的.ascx控件(即:所有服务器端代码都在.ascx文件中的脚本标记中,并带有runat =“server”属性) 。
但即便如此,您仍然需要复制.ascx文件,因此如果您需要进行更改,则意味着在您使用它的每个位置更新文件。所以是的,确保它在源代码控制中。
答案 8 :(得分:0)
我最近做了一个Web应用程序,它只是从一个Web应用程序(aspx,master和ascx)引用了这些文件(总共约90个)而没有太多问题。这就是说我使用了MVP pattern的大量修改版本,许多接口和约定来降低复杂性,相同的中间层和一个站点是另一个的子集。
重大问题:
我受到了巨大的时间压力,要让它发挥作用,它确实,现在这两个应用程序都在生产中。我不推荐它,但如果你有兴趣,请从:
开始添加现有项目,选择一些文件,点击添加按钮的箭头,然后说添加为链接。
答案 9 :(得分:0)
我有一个建议.WE可以通过在网站项目中正常创建用户控件来跨多个应用程序使用用户控件。然后更改网站属性使用固定命名和单页组件。然后我们可以将用户控件dll用于多个应用程序