SharePoint中自定义WebPart的部署 关于SharePoint中WebPart的部署,网上有很多文章可以参考,但好多都是SharePoint 2003下的,还有一些是针对SharePoint 2007的但是我觉得也比较麻烦,而且好多文章都没有讲清楚。我这里要讲的是另外一种方式:将ASP.net中的UserControl(ascx文件)作为WebPart部署到SharePoint上! 首先,在自定义和部署WebPart之前你要装好环境,这个估计你已经装好了,这里就不多说了,下面介绍具体步骤: 1.新建WebPart项目,命名为WebPartTest,如下图所示: 2.在解决方案里再新建一个ASP.NET Web 应用程序,就叫WebApp吧,如下图所示: 新建好的两个项目结果如下所示: 3.创建ascx文件 在WebApp项目上右击选择“添加”->“新建项”->选择“Web用户控件”,我建立了这样的结果: 将Label1的Text属性文字删除。双击按钮在Button1_Click事件中写入以下代码: string year = Convert.ToString(DateTime.Now.Year); string mont = Convert.ToString(DateTime.Now.Month); string day = Convert.ToString(DateTime.Now.Day); string hour = Convert.ToString(DateTime.Now.Hour); string minu = Convert.ToString(DateTime.Now.Minute); string seco = Convert.ToString(DateTime.Now.Second); Label1.Text = year + " " + mont + " " + day + " " + hour + ":" + minu + ":" + seco; 我的UserControl算是创建完毕,下面开始编辑WebPartTest项目。 右击WebPartTest项目->“添加”->新建项目->选择“Module”重命名为WebParts如图所示: 点“添加”按钮! 可以看到在WebPartTest项目下多了一个WebParts文件夹,其下有两个文件一个是Module.xml一个是sample.txt,打开Module.xml文件里面有如下xml代码: <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name="WebParts" Url="" Path=""> <File Url="sample.txt" /> </Module> </Elements> 其中Name为Module的名称,Url表示你要将你想部署的文件放到SharePoint什么目录下面,这里我填写为WebParts,Path可以不用管(实际上我也没有搞明白是干什么的),File Url表示你要部署的文件的路径名称,注意在这里可以添加多条File元素,对应多个你要部署的WebPart。 下面,拖住刚才创建的WebUserControl.ascx将它拖到WebPartTest项目的WebParts文件夹下,然后将Module.xml文件中的Url值填写为WebParts,在File Url的值中填写WebUserControl.ascx,修改后如下图所示: 下面需要修改WebPartTest项目下WebParts文件夹下的WebUserControl.ascx文件。将第一行代码<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApp.WebUserControl1" %>修改成<%@ Control Language="C#" Inherits="WebPartTest.WebUserControl1" %>也就是去掉AutoEventWireup="true" 和CodeBehind="WebUserControl1.ascx.cs"并且将Inherits的值中的namespace修改为WebPartTest,注意这里非常重要,而且要将后台代码WebUserControl1.ascx.cs和WebUserControl1.ascx.designer.cs中的namespace都要修改为WebPartTest,注意,再强调一遍,namespace的修改非常重要。 4. 部署WebPart 接下来就要做部署WebPart的工作了。 右击WebPartTest项目点击属性,调出属性界面。点击调试在“使用URL启动浏览器(R)”后面输入你要部署的SharePoint站点URL,如下图所示: 接着就要添加几行代码了,打开WebPartTest项目下的WebPartTest文件夹下的WebPartTest.cs文件,添加如下代码: private Control wp; protected override void CreateChildControls() { wp = this.Page.LoadControl("~/WebParts/WebUserControl1.ascx");//注意这里的写法,和Module.xml中的Url还有File Url要保持一直 this.Controls.Add(wp); } protected override void Render(HtmlTextWriter writer) { this.EnsureChildControls(); this.wp.RenderControl(writer); } WebPartTest.cs文件中的全部代码为如下: using System; using System.Runtime.InteropServices; using System.Web.UI; using System.Web.UI.WebControls.WebParts; using System.Xml.Serialization; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using Microsoft.SharePoint.WebPartPages; namespace WebPartTest { [Guid("1a23b714-7a10-4bd7-8a1e-3ec153fe1dae")] public class WebPartTest : System.Web.UI.WebControls.WebParts.WebPart { public WebPartTest() { this.ExportMode = WebPartExportMode.All; } private Control wp; protected override void CreateChildControls() { wp = this.Page.LoadControl("~/WebParts/WebUserControl1.ascx");//注意这里的写法,和Module.xml中的Url还有File Url要保持一直 this.Controls.Add(wp); } protected override void Render(HtmlTextWriter writer) { this.EnsureChildControls(); this.wp.RenderControl(writer); } } } 接下来我们的工作做完了,开始编译项目,部署WebPart。 点击菜单栏上“生成”->“生成解决方案”,项目生成失败,原因是我们要在WebPartTest项目里添加System.Data的引用,然后重新生成解决方案。OK,生成成功,然后右击WebPartTest项目,点击“部署”,经过漫长的几十秒部署成功。接着在我们的SharePoint站点上添加我们部署的WebPart。(怎么添加我这里就不叙述了) 添加失败,并且提示如下错误:处理 /WebParts/WebUserControl1.ascx 时出现错误。未能加载类型“WebPartTest.WebUserControl1”。 这里的错误原因是我们没有在WebUserControl1.ascx文件中加入程序集的信息,打开你站点的web.config文件,找到<SafeControls>下的最后一行,就是我们刚才添加的WebPart的信息,将Assembly的值复制下来,打开WebParts文件夹下的WebUserControl1.ascx文件,在最上面添加如下程序集信息:<%@ Assembly Name="WebPartTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" %>。 重新生成解决方案,并且部署。 OK这次重新加载WebPart部署成功,点击我们添加的Time按钮,会显示现在的准确的时间。 总结: 整个过程就是先建立WebPart项目,然后添加一个Web应用程序项目,在Web应用程序项目里创建ascx文件,然后在WebPart项目中创建Module,将创建好的ascx文件复制添加到Module文件夹下,其实Module.xml文件就是个Feature,在WebPart属性页中的SharePoint Solution项中就详细的列出了Feature的信息。 经过这样的创建和部署,我们就省去了其他一些繁琐的修改web.config文件的麻烦。 里面不对的地方还请高手多指点! |
|
来自: xiaozhenyu > 《SharePoint技术》