我需要在 c# 中以编程方式将自定义菜单操作添加到自定义内容类型。这是因为我不会事先知道需要链接的 URL。激活该功能时,将从配置中提取要链接的 URL。我尝试了以下方法:
在我的 Element.xml 文件中添加了 CustomAction:
<CustomAction
Id="MyID"
RegistrationType="ContentType"
RegistrationId="0x010100ef19b15f43e64355b39431399657766e"
Location="EditControlBlock"
Sequence="1000"
Title="My Menu Item">
<UrlAction Url="" />
</CustomAction>
在我的功能接收器 FeatureActivated 方法中,我有:
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);
}
}
我希望这段代码能用“MY URL”更新 UrlAction Url,但事实并非如此。如果我在 XML 中硬编码一个 URL,它可以工作,但我必须能够以编程方式完成它。