在ASP.NET中开发SharePoint Web部件

时间:2020-03-06 14:43:14  来源:igfitidea点击:

我被要求在ASP.NET中开发一些用户控件,这些控件以后将作为Web部件被拉到SharePoint网站中。我是SharePoint的新手,在我需要对这些部件进行原型设计时,将无法访问SharePoint服务器。

有谁知道这种方法行不通的任何原因?
如果不推荐这种方法,那么其他选择是什么?
关于资源/教程的任何建议,关于在考虑SharePoint时开发ASP.NET Web部件时应考虑的内容?

谢谢

编辑:2008年12月31日
我终于标记出了这个答案。我花了一段时间才意识到,尽管一开始很痛苦,但立即进行SharePoint路由是实现此目标的最佳方法。免费的VPC映像使我们可以相对轻松地进行设置。

尽管可以像我一样在不使用SharePoint的情况下在ASP.NET中开发Web部件,但是在开发和部署SharePoint应用程序时,我们还没有学到任何东西,只是将学习过程推到了认为自己完成的时候,(并且可能已经告知利益相关者)。延迟SharePoint学习曲线不会给我们或者项目带来任何好处,并且最终产品会更好地利用我们在此过程中获得的专业知识。

解决方案

我们需要有权访问共享点服务器,因为如果没有它,我们将无法模拟Webpart,我们必须将其部署到共享点站点以测试其是否正常运行。调试也会很痛苦。或者我们可以使用SmartPart,它是一个Web部件,充当用户控件显示在共享点站点中的包装器。

我猜最简单的方法是使用CodePlex的SmartPart for SharePoint。项目描述说:"可以承载任何ASP.NET Web用户控件的SharePoint Web部件。无需编写代码即可创建Web部件!",我想这正是我们想要做的。

设置我的机器为Sharepoint开发需要花费我几天的时间。

参见http://weblogs.asp.net/erobillard/archive/2007/02/23/build-a-sharepoint-development-machine.aspx

像对典型的.net网站一样,构建和测试控件。
解决方案1 ​​=控件
解决方案2 =虚拟网站托管控件。

在Sharepoint上部署:

我们需要对控件进行签名。

将签名的DLL放到共享点服务器(Windows / assembly)上的GAC中

在共享点站点上的虚拟服务器根目录web.config中,将该控件标记为安全。

IE。

<SafeControl Assembly="MyControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=975cc42deafbee31" Namespace="MyNamespace" TypeName="*" Safe="True" AllowRemoteDesigner="True" />

在共享点页面中注册组件:

<%@ Register Namespace="MyNamespace" Assembly="MyControl, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=975cc42deafbee31" TagPrefix="XXXX" %>

使用控件:

<XXXX:ClassName runat="server" Field1="Value1" Field2="Value2" ....></XXXX:Classname>

如果我们需要使用相同的版本号替换控件,则需要回收应用程序池以重新加载。

如果我们不需要执行特定于SharePoint的任何操作(即访问列表,其他Web部件等),则可以像常规Web部件(源自System.Web.UI.WebControls.WebParts.WebPart类)一样构建Web部件将其添加到SharePoint网站时将起作用。

ASP.NET Web部件在SharePoint中的工作方式与在ASP.NET中相同。这就是我要走的路(自ASP.NET Web部件类派生的自定义控件)。这将减轻在SharePoint服务器上实际开发的任何要求。

我们将要遇到的唯一问题是我们将无法利用SharePoint框架。如果我们要在SharePoint中进行任何高级操作,这将是一件大事。但是,SharePoint是ASP.NET加上一些其他功能,因此,可以使用System.Web.UI.WebControls.WebPart类进行开发的任何事物都应在SharePoint中很好地工作。

从纯ASP.NET到SharePoint时,一些考虑因素将有助于减轻痛苦:

  • 必要时使用汇编资源嵌入JS,CSS和图像文件

这是相关的博客文章;在SharePoint 2007中开发基本Web部件

如果这是非常短期的事情,则Microsoft具有限时的WSS评估VPC映像:

WSS3 SP1开发人员评估VPC映像

如果我们现在没有时间/资源来设置自己的VPC映像,那将使我们入门。

我们不需要SharePoint即可开发WebParts。我们可以通过从System.Web.UI.WebControls.WebParts继承来开发Webpart。这是创建Web部件的首选方法,除非我们需要以下功能,例如

* Connections between web parts that are outside of a Web Part zone

* Cross page connections

* A data caching infrastructure that allows caching to the content database

* Client-side connections (Web Part Page Services Component)

在这种情况下,我们需要通过从Microsoft.SharePoint.WebPartpages.WebPart继承来开发Webpart。我们可以在这里找到更多有用的信息

为什么必须将用户控件部署为Web部件有任何特定的原因?通过12个配置单元中的CONTROLTEMPLATES文件夹将用户控件直接部署到Sharepoint网站或者Web应用程序虚拟目录中的某个位置直接部署用户控件是完全可行的,然后我们可以使用Sharepoint Designer从网页中引用该控件。

但是,如果Web部件要求至关重要,那么我建议使用Smartpart for Sharepoint,如上所述。

实际上,由于Web部件的"滥用"性质,应始终将它们部署到共享点的bin文件夹中。如果可能,请始终将Web部件部署到垃圾箱中,并编写自己的CAS并将其包括在清单中。