【Feature】使用Feature导入WebPart

前些天在刚刚接触WebPart的时候,搜到了一篇《使用Feature导入WebPart》的文章,那个时候对Feature的了解还为零,所以看了是一知半解,等到今天回望时,发现文章里的内容竟然“缺斤少两”(我晕),郁闷之下,直接到Google上用英文查找,功夫不负有心人,总算被我挖到了另外一篇《Add A Web Part To Your Web Parts Gallery Using A Feature》(使用Feature添加一个WebPart到你的WebPart库?)。

 内容很简单啊,而且有前一篇文章做参考,所以很好理解。然而一试,发现问题多多,似乎作者们只是写出了具体的步骤,而忽略了告诉读者需要注意的小细节(- -),呃呃,于是只能硬着头皮试到底(这里非常感谢谷歌先生的帮忙),最后,光辉迸射的一刻终于到来!

 

【1】简单的讲,我们需要一个做好了的WebPart,比如我用:WebPartForLeadingIn.dll。

using  System;
using  System.Text;
using  System.Web.UI.WebControls.WebParts;

namespace  WebPartForLeadingIn
{
    
public   class  Wp:WebPart
    {
        
private   string  _Text  =   " 看,我是通过Feature导入的WebPart~ " ;

        [WebBrowsable(
true ), Personalizable( true )]
        
public   string  Text
        {
            
get  {  return  _Text; }
            
set  { _Text  =  value; }
        }
        
protected   override   void  Render(System.Web.UI.HtmlTextWriter writer)
        {
            writer.Write(_Text);
        }
    }
}

做强名称这个就不用说了,然后编译。。。

 

【2】同时最好手动编写一个.webpart文件——这个文件一般在用VS编码时不会产生,在导入到SharePoint后才有,是XML格式的文件。(我命名为Wp.webpart)

<? xml version="1.0" encoding="utf-8" ?>
< webParts >
    
< webPart  xmlns ="http://schemas.microsoft.com/WebPart/v3" >
        
< metaData >
            
< type  name ="WebPartForLeadingIn.Wp, WebPartForLeadingIn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=437f6f449ff02b7a"   />
            
< importErrorMessage > 无法导入此 Web 部件。 </ importErrorMessage >
        
</ metaData >
        
< data >
            
< properties >
                
< property  name ="Title"  type ="string" > Wp </ property >
            
</ properties >
        
</ data >
    
</ webPart >
</ webParts >

 

【3】上面两步就把WebPart搞定了,下面开始编写Feature.xml和Element.xml(后面这个文件可以随便命名, 不过记得要在Feature.xml文件里相应的关联部分输入同样的文件名)

◎Feature.xml文件:

<? xml version="1.0" encoding="utf-8"  ?>
< Feature  xmlns ="http://schemas.microsoft.com/sharepoint/"
         Id
="FC3BB8FB-EC18-4ace-9B1D-24333C2C9A6E"
         Title
="Leading in WebPart"
         Description
="通过Feature导入WebPart"
         Hidden
="FALSE"
         Scope
="Site" >
    
< ElementManifests >
        
< ElementManifest  Location ="Element.xml"   />
    
</ ElementManifests >
</ Feature >


 ◎Element.xml文件:

<? xml version="1.0" encoding="utf-8"  ?>
< Elements  xmlns ="http://schemas.microsoft.com/sharepoint/" >
    
< Module
      
Name ="WebPartPopulation"
      List
="113"
      Url
="_catalogs/wp"
      RootWebOnly
="TRUE" >
        
< File  Url ="Wp.webpart"  Type ="GhostableInLibrary"   />
    
</ Module >
</ Elements >

 

 【4】接下来这一步很棒,编写.bat批量文件,省了在cmd敲命令的功夫,而且完全“一步到位” :)

◎ImportWP.bat文件:

 @SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm"

Echo Installing feature

%STSADM% -o InstallFeature -filename WebPartForLeadingIn\feature.xml -force

Echo Activating feature

%STSADM% -o activatefeature -filename WebPartForLeadingIn\feature.xml -url http://gl-5fc632fd62e9:8800/

Iisrest

 

以上有些地方要根据您的实际情况修改,比如stsadm.exe所在位置,WebPartForLeadingIn是一个文件夹名,http://gl-5fc632fd62e9:8800/是SharePoint网站URL。


【5】搞定这些,就万事俱备,只欠东风了。

把 WebPartForLeadingIn.dll 拷到GAC里(C:\WINDOWS\assembly),把Feature.xml、Element.xml、ImportWP.bat、Wp.webprt四个文件拷贝到WebPartForLeadingIn文件夹里,然后将其挪到C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\下。

(*这里有两点要注意:

1)是要到相应的网站下修改web.config,添加SafeControl节点,我的是<SafeControl Assembly="WebPartForLeadingIn, Version=1.0.0.0, Culture=neutral, PublicKeyToken=437f6f449ff02b7a" Namespace="WebPartForLeadingIn" TypeName="*" />感觉有点昏,不是说放到GAC下的WebPart文件是完全可信的吗,怎么还要设置安全节点?

2)可能在后面进行Feature激活时会出错,

我自己是通过以下手段解决的:【SharePoint 3.0管理中心】—>【应用程序管理】—>【应用程序安全性】的“Web应用程序的策略”—>选择要激活的网站,【添加用户】—>【区域】选择“所有区域”(也可以选择相应的区域,比如 默认)—>【下一步】—>在“用户”框填上网站管理员帐号,“权限”为“完全控制”—>【完成】


【6】运行ImportWP.bat,然后到您的网站里,看看是不是多了什么东东,我的网站上是这样:

 

好了,如果有兴趣,再到“Web部件”库里看看是不是new出了什么(Wp.webpart!新 。Jesus,还等什么,直接添加到页面上吧~

 

Good luck :)

你可能感兴趣的:(part)