【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 :)

原文地址:https://www.cnblogs.com/glife/p/1590488.html