示例#1
0
        protected internal override void RemoveNode(SiteMapNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }
            SiteMapProvider provider = node.Provider;

            if (provider != this)
            {
                for (SiteMapProvider provider2 = provider.ParentProvider; provider2 != this; provider2 = provider2.ParentProvider)
                {
                    if (provider2 == null)
                    {
                        throw new InvalidOperationException(System.Web.SR.GetString("XmlSiteMapProvider_cannot_remove_node", new object[] { node.ToString(), this.Name, provider.Name }));
                    }
                }
            }
            if (node.Equals(provider.GetRootNodeCore()))
            {
                throw new InvalidOperationException(System.Web.SR.GetString("SiteMapProvider_cannot_remove_root_node"));
            }
            if (provider != this)
            {
                provider.RemoveNode(node);
            }
            base.RemoveNode(node);
        }
示例#2
0
        protected internal override void RemoveNode(SiteMapNode node)
        {
            if (node == null)
            {
                throw new ArgumentNullException("node");
            }

            SiteMapProvider ownerProvider = node.Provider;

            if (ownerProvider != this)
            {
                // Only nodes defined in this provider tree can be removed.
                SiteMapProvider parentProvider = ownerProvider.ParentProvider;
                while (parentProvider != this)
                {
                    if (parentProvider == null)
                    {
                        // Cannot remove nodes defined in other providers
                        throw new InvalidOperationException(
                                  SR.GetString(SR.XmlSiteMapProvider_cannot_remove_node, node.ToString(),
                                               this.Name, ownerProvider.Name));
                    }

                    parentProvider = parentProvider.ParentProvider;
                }
            }

            if (node.Equals(ownerProvider.GetRootNodeCore()))
            {
                throw new InvalidOperationException(SR.GetString(SR.SiteMapProvider_cannot_remove_root_node));
            }

            if (ownerProvider != this)
            {
                // Remove node from the owner provider.
                ownerProvider.RemoveNode(node);
            }

            base.RemoveNode(node);
        }