何时使用CreateChildControls()与嵌入ASPX

时间:2010-06-03 14:30:58

标签: .net asp.net sharepoint

我正在为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开发吗?

2 个答案:

答案 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)

  • 确实更多MVC风格的做事。
  • 这是推荐的方式,除非您有理由不(可能是出于上述原因)
  • 更容易维护UI组件和布局
  • 您还可以通过创建ASCX文件以声明方式制作可重复使用的用户控件

你也可以混合和匹配..声明一些静态元素,并根据需要通过在运行时将它们添加到Panel控件中来动态地洒在其他元素中。

另一种常见方法是对公共元素(如TextBox或数据网格)进行sublcass,并修改此控件的行为,外观和/或渲染方式(通过覆盖Render事件)。您可以简单地使用ASPX内部的控件版本。 这是一个双赢/胜利,因为您可以获得最大程度的控制,同时仍将布局与业务逻辑分开 我总是进行子类化以嵌入常见功能,例如所有控件的统一外观,个性化等。