È necessario aggiungere un'azione di menu personalizzata a un tipo di contenuto personalizzato a livello di programmazione in C#. Questo perché non saprò l'URL che ho bisogno di collegare in anticipo. L'URL per il collegamento verrà estratto dalla configurazione quando la funzione è attivata. Ho provato quanto segue:Come si aggiungono le azioni di menu personalizzate a livello di programmazione in SharePoint?
Aggiunta la CustomAction nel mio file Element.xml come:
<CustomAction
Id="MyID"
RegistrationType="ContentType"
RegistrationId="0x010100ef19b15f43e64355b39431399657766e"
Location="EditControlBlock"
Sequence="1000"
Title="My Menu Item">
<UrlAction Url="" />
</CustomAction>
Nel mio ricevitore caratteristica metodo FeatureActivated, ho:
SPElementDefinitionCollection eleCollection =
properties.Feature.Definition.GetElementDefinitions(
new System.Globalization.CultureInfo(1));
foreach (SPElementDefinition ele in eleCollection)
{
if (ele.Id == "MyID")
{
System.Xml.XmlNode node = ele.XmlDefinition.FirstChild;
node.Attributes[0].Value = "MY URL";
ele.FeatureDefinition.Update(true);
}
}
mi si aspetterebbe questo codice per aggiornare l'UrlAction Url con "MY URL" ma non lo fa. Se codifico un URL in XML funziona, ma devo essere in grado di farlo a livello di programmazione.
È un peccato che l'abitudine ECB non supporti una ControlClass, che offre una maggiore flessibilità rispetto alle vecchie macro {SiteUrl}. – kbrimington