我正在为SharePoint 2007开发一个webpart,并且已经看过几篇建议完成所有creation of controls in the code-behind的帖子。我正在从Java J2EE开发过渡,因此我没有.Net / ASP /等的平台历史记录。
在其他地方,它显示了如何通过embedding the control definition into the asp page标记
来执行相同的操作我的问题是:
管理控件实施位置的规则是什么?这个规则最近有变化,ASP与ASP.Net或ASP.Net MVC可能吗?此建议仅限于SharePoint开发吗?
答案 0 :(得分:2)
我将关注您正在开发2007年Web部件的事实.Web部件意味着您希望让用户能够按照自己的意愿将部件添加到页面。要实现Web部件,您需要一个独立的DLL,它可以部署到SharePoint IIS应用程序的bin目录或全局程序集缓存中。
通常使用SharePoint,您没有ASPX页面来嵌入控件并使其可重现。 ASPX页面将由用户或功能创建,然后用户将Web部件添加到这些页面。 SharePoint本质上是一个虚拟文件系统,其中许多ASPX页面或者存在于数据库中,或者存在于SharePoint根文件夹中,这使得代码成为一项重要的任务。
需要将Web部件部署为独立的DLL文件。考虑到Web部件开发的方式,您没有设计表面来创建用户界面,因此您需要通过代码创建控件树,生命周期中的首选时间是CreateChildControls部分(请参阅前面的链接)。
还有其他一些方法,例如Son of SmartPart(http://weblogs.asp.net/jan/archive/2005/11/22/431151.aspx),它允许您创建用户控件,然后将用户控件加载到Web部件控制树中。这基本上是Microsoft在2010年采用Visual Web Part功能的方法。
SharePoint的Web部件开发绝大多数使用与ASP.NET开发相同的命名空间,因此如果您不在代码中执行SharePoint特定功能(如列表读取等),则Web部件应该可用于两个ASP .NET和SharePoint环境。
约翰
答案 1 :(得分:1)
这里有一些想法。
动态控件创建(在CreateChildControls()内部
声明性定义(ASPX)
你也可以混合和匹配..声明一些静态元素,并根据需要通过在运行时将它们添加到Panel控件中来动态地洒在其他元素中。
另一种常见方法是对公共元素(如TextBox或数据网格)进行sublcass,并修改此控件的行为,外观和/或渲染方式(通过覆盖Render事件)。您可以简单地使用ASPX内部的控件版本。 这是一个双赢/胜利,因为您可以获得最大程度的控制,同时仍将布局与业务逻辑分开 我总是进行子类化以嵌入常见功能,例如所有控件的统一外观,个性化等。