首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时使用CreateChildControls()与嵌入ASPX

何时使用CreateChildControls()与嵌入ASPX
EN

Stack Overflow用户
提问于 2010-06-03 22:30:58
回答 2查看 759关注 0票数 4

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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环境中都可用。

约翰

票数 2
EN

Stack Overflow用户

发布于 2010-06-09 11:26:30

这里有一些想法。

动态控件创建(在CreateChildControls()中)

  • 这是一个更动态的解决方案
  • 如果控件布局需要不同,比如说不同的用户,你可以对流程有更多的控制。这意味着您可以在不同的树或树分支中嵌入控件,而如果您需要使控件实例可从程序集

外部访问,则只需使它们visible/invisible

  • may更合适即可。

声明性定义(ASPX)

  • 确实是更多MVC风格的事情。
  • 这是推荐的方式,除非你有不这样做的理由(也许为了更容易维护上面的UI组件和布局
  • ,你也可以通过创建ASCX文件

来以声明的方式制作可重用的用户控件

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

另一种常见的方法是子类公共元素(如TextBox或数据网格),并修改此控件的行为、外观和/或呈现方式(通过重写Render事件)。这样,您就可以简单地在ASPX中使用您的控件版本。这是一个双赢的局面,因为您可以获得最大的控制权,同时仍然将布局与业务逻辑分开。我总是子类,以便嵌入通用功能,如所有控件的统一外观,个性化等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2966881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档