2009-05-05 19 views
1

我創建了一個自定義操作功能,可以將一個按鈕添加到列表上的「操作」菜單。當我沒有指定ControlAssembly/ControlClass屬性時,按鈕顯示出來。當我指定這些屬性時,按鈕不顯示。我曾嘗試在網站web.config中添加匹配的SafeControl元素。我正在使用VSeWSS。幫助將一個按鈕添加到列表上的「操作」菜單

更新 - 刪除鏈接到其他問題 - 不知道我是如何做到這一點。 我的問題是誰能告訴我爲什麼當我指定ControlAssembly和ControlClass屬性時,我的CustomAction按鈕沒有顯示?

UPDATE 2 - RegenConfigTemp實際上是從WebControl繼承的,對不起!具有網絡訪問權限的我的機器與我的開發機器不同,在刻錄CD時無法在它們之間移動文件。

這裏有我的文件:

 
manifest.xml 
<?xml version="1.0" encoding="utf-8"?> 
<Solution SolutionId="GUIDHERE" xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <FeatureManifests> 
    <FeatureManifest Location="RegenConfigTemp\feature.xml" /> 
    </FeatureManifests> 
    <Assemblies> 
    <Assembly Location="WebFeature.dll" DeploymentTarget="GlobalAssemblyCache" /> 
    </Assemblies> 
</Solution> 
 
feature.xml 
<Feature Id="GUIDHERE" Title="RegenConfigTemp" Scope="Web" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <ElementManifests> 
    <ElementManifest Location="RegenConfigTemp\Module.xml" /> 
    </ElementManifests> 
</Feature> 
 
Module.xml 
<?xml version="1.0" encoding="utf-8"?> 
<Elements Id="GUIDHERE" xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <CustomAction 
    Id="GUIDHERE" 
    RegistrationType="List" 
    RegistrationId="1981" 
    GroupId="ActionsMenu" 
    Location="Microsoft.SharePoint.StandardMenu" 
    Sequence="1000" 
    Title="Regenerate List Contents" 
    ControlAssembly="WebFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=myPKTokenHere" 
    ControlClass="WebFeature.RegenConfigTemp" 
    ></CustomAction> 
</Elements> 

 
RegenConfigTemp.cs 
using System; 
using System.Runtime.InteropServices; 
using System.Web.UI.WebControls; 
using Microsoft.SharePoint.WebControls; 

namespace WebFeature 
{ 
    [Guid("GUID HERE MATCHES 1st GUID in Module.xml")] 
    public class RegenConfigTemp : WebControl 
    { 
     protected override void OnLoad(EventArgs e) 
     { 
      this.EnsureChildControls(); 
      base.OnLoad(e); 
     } 
     protected override void CreateChildControls() 
     { 
      base.CreateChildControls(); 
     } 
    } 
} 

添加以下到Web.config

 
<SafeControl Assembly="WebFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=myPKTokenHere" Namespace="WebFeature" TypeName="RegenConfigTemp" Safe="True" />

+0

這應該是對這個問題的迴應嗎? – 2009-05-05 15:54:52

回答

1

原來問題出在Module.xml中。我錯過了'版本'後的'等號'在這個(更正的)行: ControlAssembly =「WebFeature,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = myPKTokenHere」

我走上了正確的軌跡b/c我發現Sharepoint的診斷日誌記錄,並在此博客上發表第一條評論:http://blog.lostparticles.net/?p=23恰恰是我的問題。

感謝您爲我們提供的幫助。

更新:我也必須修復web.config行。我最終將safecontrol行放在清單中,而不是直接放在web.config中;謝謝JMD。 (順便說一句,爲什麼VSeWSS沒有爲我做這件事,當它適用於Web部件?)

0

你確定你的代碼應該呈現什麼?你從哪個類繼承,你的渲染代碼在哪裏?您是否檢查過SharePoint日誌中的任何異常?

這不是您的問題的答案,但您可以將您的SafeControl標籤放置在清單中而不是web.config中。

0

當然RegenConfigTemp應該從某種東西繼承?目前你沒有添加任何控件,所以如果你重寫一個空的控件,這就是爲什麼你什麼都看不到。如果沒有別的,嘗試設置一個斷點或向CreateChildControls()添加一些診斷跟蹤來查看代碼是否正在執行。

相關問題