实际上,我对 SharePoint 还比较陌生,一开始我非常惊讶,必须手动创建单独的控件,而无需像任何普通的 ASP.NET Web 开发所涉及的 GUI 界面。但是,我有一个非常非常的好技巧,它允许我仍然使用 GUI 界面,并使用它为 Sharepoint 创建 webpart。它涉及将 WebUserControls 包装在 webparts 中。
我使用的链接在这里:http://www.a2zdotnet.com/View.aspx?id=95
您基本上是在网站中创建 WebUserControls(.ascx 文件),因此您可以像任何普通的 .aspx 页面一样添加您的控件。您还可以拥有一个普通的代码隐藏文件 (.ascx.cs)。然后将 .ascx 文件拖到一个 .aspx 文件上,这样它将使用您的 WebUserControl。当您的 .ascx 文件准备好并生成后,您将它们复制到 SharePoint Server 的 12-Hive 中的 Layouts 目录。最好在里面创建一个子目录,避免和里面的其他文件冲突。
然后您需要创建一个单独的类库项目,该项目将启用您的 WebPart 代码。然后告诉 WebPart 使用布局目录中的 .ascx 文件。像这样的:
protected override void CreateChildControls()
{
base.CreateChildControls();
try
{
this.Controls.Clear();
_myControl = this.Page.LoadControl("\\_layouts\\MyFolder\\WebUserControl.ascx");
this.Controls.Add(_myControl);
}
catch (Exception e)
{
err = e.Message;
}
我上面提供的链接提供了更多信息,但基本上你编译 webpart 项目,然后将 DLL 添加到共享点服务器的 BIN 目录(c:\inetpub\wwwroot\wss\ 等)。顺便说一下,您不必将其编译到 GAC。
然后你在你的共享点服务器的 web.config 中添加一个条目:
<SafeControl Assembly="MyWebUserControl, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" Namespace="MyWebUserControl" TypeName="*" Safe="True" />
如果您没有将 DLL 编译到 GAC,而是使用 BIN,您只需要:
<SafeControl Assembly="UserControl" Namespace="UserControl" TypeName="*" Safe="True" />
同样,我在上面发布的链接已将其写入代码中,即对 GUID 的引用,仅当您将 DLL 放置在 GAC 中时才需要它。如果只放在 BIN 目录下,则不需要代码的 GUID 部分。
希望对您有所帮助。
灰