我正在为SharePoint 2007开发一个the部件,我已经看到了几篇建议做所有creation of controls in the code-behind的帖子。我正在从Java开发过渡,所以我没有.Net/ J2EE /等的平台历史。
在其他地方,它展示了如何使用标记通过embedding the control definition into the asp page来做同样的事情
我的问题是:
控制在何处实现控件的规则是什么?这个规则最近有变化吗,ASP vs ASP.Net或者ASP.Net MVC?这个建议是否仅限于SharePoint开发?
发布于 2010-06-05 03:27:22
我将重点介绍您正在开发2007年的Web部件这一事实。Web部件意味着您希望让用户能够按自己的意愿将部件添加到页面中。若要实现SharePoint部件,则需要一个独立的DLL,该DLL被部署到web应用程序的bin目录或全局程序集缓存中。
通常,使用SharePoint时,您没有可在其中嵌入控件并使其可重现的ASPX页。ASPX页面将由用户或功能创建,然后用户将向这些页面添加web部件。SharePoint本质上是一个虚拟文件系统,许多ASPX页面要么驻留在数据库中,要么位于SharePoint根文件夹中,使代码隐藏在一个重要的任务后面。
该web部件需要部署为独立的DLL文件。考虑到web部件开发的方式,您没有设计图面来创建用户界面,因此您需要通过代码创建控件树,生命周期中的首选时间是CreateChildControls部分(请参阅前面的链接)。
还有其他一些方法可以解决这个问题,比如SmartPart之子(http://weblogs.asp.net/jan/archive/2005/11/22/431151.aspx),它允许你创建一个用户控件,然后将用户控件加载到你的web部件控件树中。这基本上就是Microsoft在2010年的Visual Web部件功能中采取的方法。
SharePoint的绝大多数Web部件开发使用与ASP.NET开发相同的命名空间,因此,如果您没有在代码中执行特定于SharePoint的功能,如列表读取等,web部件应该在ASP.NET和SharePoint环境中都可用。
约翰
发布于 2010-06-09 11:26:30
这里有一些想法。
动态控件创建(在CreateChildControls()中)
外部访问,则只需使它们visible/invisible
声明性定义(ASPX)
来以声明的方式制作可重用的用户控件
你也可以混合搭配..声明一些静态元素,并在运行时通过将它们添加到Panel控件中来根据需要动态地散布其他元素。
另一种常见的方法是子类公共元素(如TextBox或数据网格),并修改此控件的行为、外观和/或呈现方式(通过重写Render事件)。这样,您就可以简单地在ASPX中使用您的控件版本。这是一个双赢的局面,因为您可以获得最大的控制权,同时仍然将布局与业务逻辑分开。我总是子类,以便嵌入通用功能,如所有控件的统一外观,个性化等。
https://stackoverflow.com/questions/2966881
复制相似问题