SitecoreEventArgs Result.Cancel = true不取消事件

Kam*_*ran 1 sitecore sitecore7

在sitecore Content Editor我想取消添加一个项目.所以我使用了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!!");
        }
     }   
 }
Run Code Online (Sandbox Code Playgroud)

这里是配置文件中的条目:

 <event name="item:added">
        <handler type="EventHandlers.CompanyEventHandler" method="MoreThenOneAddressAllowed" />
      </event>
Run Code Online (Sandbox Code Playgroud)

我可以在内容编辑器中看到该消息.但是项目也被添加了,有些我想停止添加项目.

Mar*_*idy 5

完全不确定原因.但您应该考虑将此规则实现为插入规则.只为编辑器提供动态"插入地址"选项,而这些选项已经没有.

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

  • @Mark Cassidy的回答是有效的.您只需要有适当的条件来检查是否允许其他子项. (2认同)