控件具有包含HTML和后台代码的ASCX文件。
组合控件将会比较困难,因为我们与使用ASCX文件中的HTML语法来设计控件的设计师合作。
Tundey,我们在这里使用SVN。你有没有关于如何实施你的建议的示例? SVN如何共享ASP.NET控件?
谢谢!
Scott Guthrie 在这里提供了一些关于如何设置一个用户控件库项目的好建议,然后使用预构建事件将用户控件复制到多个项目中。这非常有效。
http://webproject.scottgu.com/CSharp/usercontrols/usercontrols.aspx
如果您想在不同的项目中使用控件,就需要创建组合控件而不是.ASCX控件。
另一种选择是使用您的源代码控制工具在您的 Web 应用程序之间“共享” ASCX 控件。这将允许您在任何一个应用程序中更改控件,并确保源代码控制工具反映这些更改。
我通过牺牲一些最初构建控件的便利性来实现这一点。
您可以创建一个控件库项目,它将为您生成一个控件库 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
无论您将什么放入该文本属性中,都将被呈现。
然后,您放置在此处的任何控件都可以像您使用的任何其他控件一样运行。只需将其导入到工具箱中,进行注册引用,然后将其放置在 ASP 页面上即可。
我在这里使用StarTeam,它允许您在多个文件夹之间“共享”对象(文件、更改请求、需求等)。不确定Subversion(SVN)是否具有该功能。如果没有,这里有另一个技巧可以使用:从控件的主要位置创建到其他项目中位置的连接点。连接点就像Unix符号链接一样。您可以从此处下载用于在Windows中创建连接点的工具。
我最近做了一个Web应用程序,只是从一个Web应用程序(aspx、master和ascx)引用文件(总共约90个),没有太多问题。话虽如此,我使用了一个经过大量修改的MVP模式版本,许多接口和约定来降低复杂性,相同的中间层和一个站点是另一个站点的子集。
主要问题:
添加现有项,选择一些文件,点击添加按钮的箭头并选择添加为链接。