在ASP.NET中开发SharePoint Web部件

时间:2008-09-25 13:30:45

标签: sharepoint web-parts

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

有没有人知道这种方法不起作用的原因? 如果不推荐这种方法,其他选择会是什么? 关于在使用SharePoint开发ASP.NET Web部件时要考虑什么的资源/教程的任何建议?

由于

编辑:2008年12月31日 我终于给这个答案做了回答。我花了一段时间才意识到,立即开始使用SharePoint路由虽然一开始很痛苦,但却是最好的方法。免费的VPC图像使得设置开发相对无痛。

虽然你可以像我一样,在没有SharePoint的情况下在ASP.NET中开发Web部件,但在开发和部署SharePoint应用程序时,你还没有学到什么,只是把学习曲线推到了你想到的时候。你已经完成了,(并且可能已经通知了利益相关者)。延迟SharePoint学习曲线对您或您的项目没有任何好处,您的最终产品将更好地获得您在此过程中获得的专业知识。

10 个答案:

答案 0 :(得分:3)

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

您将遇到的唯一问题是您将无法利用SharePoint框架。如果您在SharePoint中执行任何高级操作,这是一个大问题。但是,SharePoint是ASP.NET加上一些附加功能,因此使用System.Web.UI.WebControls.WebPart类开发的任何内容都应该在SharePoint中运行良好。

从纯ASP.NET到SharePoint时,一些有助于减轻痛苦的注意事项:

  • 如果您可以将所有内容放在单个程序集中,则部署将更容易
    • 尝试将您需要的所有内容放入部署到SharePoint的DLL中
    • 使用程序集资源来嵌入JS,CSS和图像文件(如果需要)
  • 您正在构建的程序集的强名称
    • 大多数SharePoint部署最终都在GAC中,并且需要强名称

这是一篇相关的博文; Developing Basic Web Parts in SharePoint 2007

答案 1 :(得分:2)

我想最简单的方法是使用CodePlex中的SmartPart for SharePoint。项目描述显示“SharePoint web部分可以托管任何ASP.NET Web用户控件。创建Web部件而无需编写代码!”,我想这正是您想要做的。

答案 2 :(得分:2)

设置我的机器为Sharepoint开发花了我几天。

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

答案 3 :(得分:2)

如果这是一个非常短期的事情,微软有一个有时间限制的WSS评估VPC图像:

WSS3 SP1 Developer Evaluation VPC image

如果您现在没有时间/资源来设置自己的VPC图像,那么这将帮助您入门。

答案 4 :(得分:0)

您需要访问sharepoint服务器,因为如果没有它就无法模拟您的webpart,您必须将其部署到您的sharepoint站点以测试它是否正常工作。调试也会很痛苦。或者您可以使用SmartPart,它是一个webpart,就像用户控件的包装一样,可以在sharepoint站点中显示。

答案 5 :(得分:0)

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

在Sharepoint上部署:

您需要签署控件。

将已签名的DLL放入sharepoint服务器上的GAC(Windows /程序集)

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

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

在sharepoint页面中注册该组件:

<%@ 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>

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

答案 6 :(得分:0)

如果您不需要执行任何特定于SharePoint的操作(即访问列表,其他Web部件等),那么您可以像常规webpart一样构建webpart(派生自System.Web.UI.WebControls.WebParts.WebPart ()),它将在添加到SharePoint站点时起作用。

答案 7 :(得分:0)

您不需要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。您可以找到更有用的信息here

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

实际上,Web部件应始终部署到sharepoint的bin文件夹,因为它们具有“滥用”性质。如果可能,始终将Web部件部署到bin中,并编写自己的CAS并将其包含在清单中。

相关问题