2009-05-05 15 views
1

Ich habe eine CustomAction-Funktion erstellt, um eine Schaltfläche zum Menü "Aktionen" in einer Liste hinzuzufügen. Wenn ich die ControlAssembly/ControlClass-Attribute nicht angeben, wird die Schaltfläche angezeigt. Wenn ich diese Attribute angeben, wird die Schaltfläche nicht angezeigt. Ich habe versucht, ein passendes SafeControl-Element in der Site web.config hinzuzufügen. Ich benutze VSeWSS.Hilfe Hinzufügen einer Schaltfläche zum Menü "Aktionen" in einer Liste

UPDATE - Link zu anderer Frage entfernt - nicht sicher, wie ich das gemacht habe. Meine Frage ist, kann mir jemand sagen, warum meine CustomAction-Schaltfläche nicht angezeigt wird, wenn ich die Attribute ControlAssembly und ControlClass angeben?

UPDATE 2 - RegenConfigTemp erbt tatsächlich von WebControl, sorry! Mein Rechner mit Webzugriff unterscheidet sich von meinem Rechner und es gibt keine Möglichkeit, Dateien zwischen ihnen zu verschieben, ohne eine CD brennen zu müssen.

hier sind meine Dateien:

 
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(); 
     } 
    } 
} 

Ich habe folgendes auf die web.config

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

+0

soll das eine Antwort auf diese Frage sein? –

+0

Voted zu schließen, als keine echte Frage –

Antwort

1

Es stellte sich heraus, dass das Problem in Module.xml war. Ich fehlte das Zeichen 'equals' nach 'Version' in dieser (korrigiert) Zeile: ControlAssembly = "WebFeature, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = myPKTokenHere"

ich auf dem richtigen Weg b bekam/c Ich habe Sharepoints Diagnoseprotokollierung entdeckt, und der erste Kommentar in diesem Blog: http://blog.lostparticles.net/?p=23 war genau mein Problem.

Danke für Ihre Hilfe.

UPDATE: Ich musste auch web.config Linie reparieren. Ich habe die Safecontrol-Zeile im Manifest anstatt direkt in der web.config; Danke JMD. (BTW, warum tut das VSeWSS nicht für mich, wenn es für Webparts tut?)

0

Sind Sie sicher, dass Ihr Code soll, etwas machen? Welche Klasse erben Sie und wo ist Ihr Rendercode? Haben Sie das SharePoint-Protokoll auf eine Ausnahme überprüft?

Dies ist keine Antwort auf Ihre Frage, aber Sie können Ihr SafeControl-Tag in das Manifest statt der web.config platzieren.

0

Sicher RegenConfigTemp sollte von etwas erben? Gegenwärtig fügen Sie keine Steuerelemente hinzu. Wenn Sie also ein leeres Steuerelement außer Kraft setzen, sehen Sie nichts. Wenn nichts anderes, versuchen Sie, einen Haltepunkt zu setzen oder eine Diagnoseprotokollierung zu CreateChildControls() hinzuzufügen, um zu sehen, ob der Code ausgeführt wird.

Verwandte Themen