65.9K
CodeProject 正在变化。 阅读更多。
Home

SharePoint Web 部件的用户控件重用

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2011年12月5日

CPOL

5分钟阅读

viewsIcon

31859

在 ASP.NET Web 应用程序和 SharePoint 的 Visual Web 部件之间共享用户控件。

引言

本文的目的是展示如何在 ASP.NET Web 应用程序和 SharePoint 的 Visual Web 部件之间共享用户控件。

步骤概述

实现此目的的基本步骤如下:

  1. 像往常一样编写您的用户控件,通常使用 Visual Studio 设计器。
  2. 部署预编译的用户控件解决方案。
  3. 将控件添加到 Web 应用程序。
  4. 准备 SharePoint 使用用户控件解决方案。
  5. 将控件添加到 SharePoint Web 部件应用程序。

我们将在本文的其余部分更详细地介绍这些步骤。

1. 首先创建一个新解决方案并添加一个新的 ASP.NET Web 应用程序,将其命名为“CustomUIControl”。创建项目时,请确保选择了 .NET Framework 3.5。由于我们将此控件暴露给 SharePoint,而 SharePoint 项目只能在 3.5 下创建,因此我们必须为控件项目使用较低的框架。

001.jpg

删除 Default.aspx 页面,并通过右键单击项目并选择“添加/新建项”来添加 Web 用户控件。将控件命名为 CustomerControl.ascx

002.jpg

像往常一样编写您的 ascx 页面代码。

2. 完成控件的编写后,首先使用 Visual Studio 对项目进行签名并生成项目。

要对项目进行签名,请转到项目属性,“签名”选项卡,选中“签名程序集”并指向现有密钥或发行新密钥。

使用 Visual Studio 生成项目将生成您的 CustomUIControl.dll。您需要使用 Framework 2.0 编译器通过特殊设置编译项目,以获得单独的 ascx 程序集。为了获得此程序集,请打开命令窗口并将目录更改为 2.0 Framework。确保以管理员身份运行。

003.jpg

使用以下行编译您的项目:

aspnet_compiler -p 
c:\source\article\customuicontrol\customuicontrol -v customuicontrol -fixednames
c:\source\articlebuild -keyfile c:\source\article\customuicontrol\
customuicontrol\contstest.snk

004.jpg

让我解释一下每个路径的含义

  1. c:\source\article\customuicontrol\customuicontrol 是您项目所在的位置路径。
  2. customuicontrol 是您正在编译的项目名称。
  3. c:\source\articlebuild - 是构建的位置。这必须与您当前项目的路径不同,并且必须为空,否则在编译过程中会出错。
  4. c:\source\article\customuicontrol\customuicontrol\controlstest.snk 是您用于签名 CustomUIControl 项目的密钥文件的位置。

如果您查看已编译的目录,您将看到编译过程创建的几个文件。

005.jpg

我们需要这两个文件:CustomUIControl.dllApp_Web_customercontrol.ascx.cdcab7d2.dll。后者包含我们将用于 UI 的 Web 控件部分。

将这两个程序集放入 GAC。

以管理员身份从您的 VS2010 运行命令窗口。

运行以下命令将您的程序集注册到 GAC:

gacutil /i c:\source\articlebuild\bin\customuicontrol.dll

gacutil /i c:\source\articlebuild\bin\app_web_customercontrol.ascx.cdcab7d2.dll

006.jpg

验证您是否已将这两个程序集添加到 GAC。您可以在 C:\Windows\assembly 中找到已注册的程序集。

3. 添加一个新的 ASP.NET Web 应用程序来测试您的控件。

将两个程序集引用添加到新项目中;确保在“属性”窗口中将“复制到本地”更改为 True 。您的 Web 应用程序不一定需要查找 GAC,但如果您有需要,可以修改 web.config 以从 GAC 添加这些程序集。

在您的 Web 应用程序中,选择要放置控件的 aspx 页面,并添加一个标签来注册控件。

007.jpg

您可以通过双击“引用”文件夹中的 App_Web_customercontrol.asxc.cdcab7d2.dll 来查找标签中应有的值。

008.jpg

如您所见,对于您的注册标签:

<%@ Register TagPrefix="CC" Namespace="ASP" 
Assembly="App_Web_customercontrol.ascx.cdcab7d2" %> 

程序集名称是 App_Web_customercontrol.ascx.cdcab7d2,命名空间是 ASP,页面上使用的控件名称是 customercontrol_ascx

将新标签添加到您的 aspx 页面:

<cc:customercontrol_ascx runat="server" ID="test1" /> 

并运行项目以验证控件是否按预期运行。

4. 下一步是向您的解决方案添加一个新的 SharePoint Feature 项目。

在 SharePoint 2010 项目下添加新的 Visual Web 部件,并将其命名为 SPCustomerPart

将您的 Web 部件重命名为 CustomerWebPart ,并将您的 ascx 控件重命名为 CustomerWebPartUserControl.ascx

您的解决方案资源管理器应该类似于下面的屏幕截图。

009.jpg

CustomUIControl.dllApp_Web_customercontrol.ascx.cdcab7d2.dll 添加到您的 SharePoint 项目中,“复制本地”应在“属性”窗口中设置为 False

我们需要确保我们的程序集在 SharePoint 项目的 web.config 中有引用;否则它将不知道在哪里找到它们。

找到您的 web.config,在默认配置下,我们的位于 C:\inetpub\wwwroot\wss\VirtualDirectories\80 下。

打开 web.config 文件并在文件中添加程序集注册:

010.jpg

您可以在 GAC c:\windows\assembly 中查找您之前注册的程序的版本和 PublicKeyToken。

5. 返回 SharePoint 项目,打开您的 CustomerWebPartUserControl.ascx 并添加注册标签和您的用户控件到页面:

011.jpg

这应该与 Web 应用程序标签完全相同,或者如果您愿意,可以向 SharePoint 的 web.config 添加一个标签,这样您就不需要在页面上使用 Register 标签了。

此时,您应该能够运行您的 Feature 并将其添加到您的 SharePoint 页面。

在验证您的 Feature 按预期工作后,您可以部署您的 Feature。

在命令窗口中,将您的目录更改为 c:\program files\common files\microsoft shared\web server extensions\14\bin 或浏览到 stsadm.exe 的位置。

运行以下命令进行部署:

stsadm -o addsolution -filename [full path your.wsp]

stsadm -o deploysolution -name [no path just name.wsp] -allowgacdeployment 
    -immediate -url [your url]

012.jpg

您可以运行您的 SharePoint 站点并验证您的 Web 部件是否按预期工作。

历史

  • 2011 年 12 月 5 日:初始发布
© . All rights reserved.