SitecoreEventArgs Result.Cancel = true 不取消事件

SitecoreEventArgs Result.Cancel = true not Canceling the event

在 sitecore Content Editor 我想取消添加一个 item.So 我使用了 Event Handler item:added 并写了一个方法来取消事件..但是它现在正在工作,我花了很多精力但没有任何线索。

代码如下:

 public void MoreThenOneAddressAllowed(object sender, EventArgs args)
 {
     var item = Event.ExtractParameter<Item>(args, 0);

     if (item.TemplateID.ToString() == Settings.GetSetting("AddressEntryTemplateID"))
     {
        if (item.Parent.Fields["More than one address allowed"] != null && item.Parent.Fields["More than one address allowed"].Value != "1" && item.Parent.Children.Count >= 1)
        {
            SitecoreEventArgs evt = args as SitecoreEventArgs;
            evt.Result.Cancel = true;
            Sitecore.Context.ClientPage.ClientResponse.Alert("More than one address not allowed under this item!!");
        }
     }   
 }

这是配置文件中的条目:

 <event name="item:added">
        <handler type="EventHandlers.CompanyEventHandler" method="MoreThenOneAddressAllowed" />
      </event>

我可以在内容编辑器中看到消息。但是item也添加了,有些我想停止添加item。

不知道为什么,确切地说。但是您也许应该考虑将此规则实现为插入规则。仅在还没有的元素上动态地为编辑器提供 "Insert Address" 选项。

有关如何设置的示例,请参见此处:http://www.newguid.net/sitecore/2011/sitecore-rules-engine-how-to-create-an-insert-option-rule/

您应该使用 item:creating 事件,因为它会更早发生。 item:added 会来不及了!