SharePoint Web 部件的用户控件重用





0/5 (0投票)
在 ASP.NET Web 应用程序和 SharePoint 的 Visual Web 部件之间共享用户控件。
引言
本文的目的是展示如何在 ASP.NET Web 应用程序和 SharePoint 的 Visual Web 部件之间共享用户控件。
步骤概述
实现此目的的基本步骤如下:
- 像往常一样编写您的用户控件,通常使用 Visual Studio 设计器。
- 部署预编译的用户控件解决方案。
- 将控件添加到 Web 应用程序。
- 准备 SharePoint 使用用户控件解决方案。
- 将控件添加到 SharePoint Web 部件应用程序。
我们将在本文的其余部分更详细地介绍这些步骤。
1. 首先创建一个新解决方案并添加一个新的 ASP.NET Web 应用程序,将其命名为“CustomUIControl
”。创建项目时,请确保选择了 .NET Framework 3.5。由于我们将此控件暴露给 SharePoint,而 SharePoint 项目只能在 3.5 下创建,因此我们必须为控件项目使用较低的框架。
删除 Default.aspx 页面,并通过右键单击项目并选择“添加/新建项”来添加 Web 用户控件。将控件命名为 CustomerControl.ascx。
像往常一样编写您的 ascx 页面代码。
2. 完成控件的编写后,首先使用 Visual Studio 对项目进行签名并生成项目。
要对项目进行签名,请转到项目属性,“签名”选项卡,选中“签名程序集”并指向现有密钥或发行新密钥。
使用 Visual Studio 生成项目将生成您的 CustomUIControl.dll。您需要使用 Framework 2.0 编译器通过特殊设置编译项目,以获得单独的 ascx 程序集。为了获得此程序集,请打开命令窗口并将目录更改为 2.0 Framework。确保以管理员身份运行。
使用以下行编译您的项目:
aspnet_compiler -p
c:\source\article\customuicontrol\customuicontrol -v customuicontrol -fixednames
c:\source\articlebuild -keyfile c:\source\article\customuicontrol\
customuicontrol\contstest.snk
让我解释一下每个路径的含义
- c:\source\article\customuicontrol\customuicontrol 是您项目所在的位置路径。
customuicontrol
是您正在编译的项目名称。- c:\source\articlebuild - 是构建的位置。这必须与您当前项目的路径不同,并且必须为空,否则在编译过程中会出错。
- c:\source\article\customuicontrol\customuicontrol\controlstest.snk 是您用于签名
CustomUIControl
项目的密钥文件的位置。
如果您查看已编译的目录,您将看到编译过程创建的几个文件。
我们需要这两个文件:CustomUIControl.dll 和 App_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
验证您是否已将这两个程序集添加到 GAC。您可以在 C:\Windows\assembly 中找到已注册的程序集。
3. 添加一个新的 ASP.NET Web 应用程序来测试您的控件。
将两个程序集引用添加到新项目中;确保在“属性”窗口中将“复制到本地”更改为 True
。您的 Web 应用程序不一定需要查找 GAC,但如果您有需要,可以修改 web.config 以从 GAC 添加这些程序集。
在您的 Web 应用程序中,选择要放置控件的 aspx 页面,并添加一个标签来注册控件。
您可以通过双击“引用”文件夹中的 App_Web_customercontrol.asxc.cdcab7d2.dll 来查找标签中应有的值。
如您所见,对于您的注册标签:
<%@ 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。
您的解决方案资源管理器应该类似于下面的屏幕截图。
将 CustomUIControl.dll 和 App_Web_customercontrol.ascx.cdcab7d2.dll 添加到您的 SharePoint 项目中,“复制本地”应在“属性”窗口中设置为 False
。
我们需要确保我们的程序集在 SharePoint 项目的 web.config 中有引用;否则它将不知道在哪里找到它们。
找到您的 web.config,在默认配置下,我们的位于 C:\inetpub\wwwroot\wss\VirtualDirectories\80 下。
打开 web.config 文件并在文件中添加程序集注册:
您可以在 GAC c:\windows\assembly 中查找您之前注册的程序的版本和 PublicKeyToken。
5. 返回 SharePoint 项目,打开您的 CustomerWebPartUserControl.ascx 并添加注册标签和您的用户控件到页面:
这应该与 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]
您可以运行您的 SharePoint 站点并验证您的 Web 部件是否按预期工作。
历史
- 2011 年 12 月 5 日:初始发布