Мне нужно добавить пользовательское действие меню к пользовательскому типу контента программно в c #. Это потому, что я не буду знать URL, на который мне нужно сослаться заранее. URL-адрес для ссылки будет извлечен из конфигурации при активации функции.
Я пробовал следующее:
Добавлен CustomAction в моем файле Element.xml как:
<CustomAction
Id="MyID"
RegistrationType="ContentType"
RegistrationId="0x010100ef19b15f43e64355b39431399657766e"
Location="EditControlBlock"
Sequence="1000"
Title="My Menu Item">
<UrlAction Url="" />
</CustomAction>
В моем приемнике функций FeatureActivation у меня есть:
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);
}
}
Я ожидал бы, что этот код обновит URL UrlAction с помощью "МОЙ URL", но это не так. Если я жестко закодирую URL в XML, он работает, но я должен быть в состоянии сделать это программно.