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

  • 相关阅读:
    centos7安装mysql5.7
    Day1:基于ECS搭建FTP服务
    sql多表语句
    SSM多表查询
    ssm中使用逆向工程
    用maven对ssm进行整合
    Maven设置本地仓和阿里云远程仓
    解决maven项目中web.xml is missing and <failOnMissingWebXml> is set to true
    SSM登陆
    理解ConcurrentMap
  • 原文地址:https://www.cnblogs.com/glife/p/1590488.html
Copyright © 2020-2023  润新知