8

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

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

谢谢

编辑:2008 年 12 月 31 日 我终于标记了这个答案。我花了一段时间才意识到,尽管一开始很痛苦,但立即走 SharePoint 路线是最好的方法。免费的 VPC 映像使设置开发相对轻松。

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

4

10 回答 10

3

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

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

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

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

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

于 2008-09-25T13:55:48.680 回答
2

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

于 2008-09-25T13:40:57.153 回答
2

设置我的机器以开发 Sharepoint 花了我几天时间。

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

于 2008-09-25T13:42:32.737 回答
2

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

WSS3 SP1 开发人员评估 VPC 映像

如果您现在没有时间/资源来设置您自己的 VPC 映像,这将帮助您开始。

于 2008-09-25T14:21:17.433 回答
0

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

于 2008-09-25T13:33:20.653 回答
0

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

在 Sharepoint 上部署:

您需要对控件进行签名。

将签名的 DLL 放入共享点服务器(Windows/程序集)上的 GAC

在 sharepoint 站点上的虚拟服务器根 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>

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

于 2008-09-25T13:46:07.767 回答
0

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

于 2008-09-25T13:50:24.107 回答
0

您不需要 SharePoint 来开发 WebPart。您可以通过从 System.Web.UI.WebControls.WebParts 继承来开发 Web 部件。这是创建 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。你可以在这里找到更多有用的信息

于 2008-09-25T18:49:59.597 回答
0

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

但是,如果 Web 部件要求至关重要,那么我推荐 Smartpart for Sharepoint,如前所述。

于 2008-09-25T22:06:14.443 回答
0

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

于 2008-09-26T06:59:36.753 回答