代码之家  ›  专栏  ›  技术社区  ›  TheZenker

在ASP.NET中开发SharePoint Web部件[关闭]

  •  8
  • TheZenker  · 技术社区  · 16 年前

    我被要求在ASP.NET中开发一些用户控件,稍后这些控件将作为Web部件拉入SharePoint网站。我不熟悉SharePoint,在我需要制作这些部件原型的时候,我将无法访问SharePoint服务器。

    有人知道这种方法不起作用的原因吗? 如果不建议使用这种方法,其他的选择是什么? 在开发带有SharePoint的ASP.NET Web部件时,对资源/教程有什么建议吗?

    谢谢

    编辑:12/31/2008 我终于找到了这个问题的答案。我花了一段时间才意识到,立即使用SharePoint路径,虽然起初很痛苦,但却是最好的方法。免费的vpc图像使建立相对无痛的发展。

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

    10 回复  |  直到 16 年前
        1
  •  2
  •   DylanW    16 年前

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

    WSS3 SP1 Developer Evaluation VPC image

    如果您现在没有时间/资源来设置自己的vpc映像,那么就可以开始了。

        2
  •  3
  •   Eric Schoonover thSoft    16 年前

    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

        3
  •  2
  •   Alfred B. Thordarson    16 年前

    我想最简单的方法是使用 SmartPart for SharePoint 来自CODULTEX。项目说明显示“SharePoint Web部件 可以承载任何ASP.NET Web用户控件 . 创建Web部件而不编写代码!“我想这正是你想要做的。

        4
  •  2
  •   Galwegian    16 年前
        5
  •  0
  •   Chris Cudmore    16 年前

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

    在SharePoint上部署:

    你需要在控制装置上签字。

    将签名的dll放到SharePoint服务器(Windows/程序集)上的GAC中

    在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
  •   axel_c    16 年前

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

        7
  •  0
  •   Leon Tayson    16 年前

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

        8
  •  0
  •   ashwnacharya    16 年前

    开发Web部件不需要SharePoint。您可以通过继承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来开发Web部件。你可以找到更多有用的信息 here

        9
  •  0
  •   Martin Hirons    16 年前

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

    但是,如果Web部件要求很重要,那么我建议使用前面提到的SmartPart for SharePoint。

        10
  •  0
  •   mortenbpost    16 年前

    实际上,由于Web部件的“滥用”性质,它们应该始终部署到SharePoint的bin文件夹中。如果可能的话,总是将Web部件部署到bin中,并编写自己的CA并将其包含在清单中。