/// <summary> /// Acquires the route values from a given XElement. /// </summary> /// <param name="node">The node.</param> /// <returns></returns> protected virtual void AcquireRouteValuesFrom(XElement node, IRouteValueDictionary routeValues) { foreach (XAttribute attribute in node.Attributes()) { var attributeName = attribute.Name.ToString(); var attributeValue = attribute.Value; if (reservedAttributeNameProvider.IsRouteAttribute(attributeName)) { routeValues.Add(attributeName, attributeValue); } } }
/// <summary> /// Acquires the route values from a given XElement. /// </summary> /// <param name="node">The node.</param> /// <param name="routeValues">The route values dictionary to populate.</param> /// <param name="helper">The node helper.</param> /// <returns></returns> protected virtual void AcquireRouteValuesFrom(XElement node, IRouteValueDictionary routeValues, ISiteMapNodeHelper helper) { foreach (XAttribute attribute in node.Attributes()) { var attributeName = attribute.Name.ToString(); var attributeValue = attribute.Value; if (helper.ReservedAttributeNames.IsRouteAttribute(attributeName)) { routeValues.Add(attributeName, attributeValue); } } }
/// <summary> /// Acquires the route values from a given <see cref="T:System.Web.SiteMapNode"/>. /// </summary> /// <param name="node">The node.</param> /// <returns></returns> protected virtual void AcquireRouteValuesFrom(System.Web.SiteMapNode node, IRouteValueDictionary routeValues) { // Unfortunately, the ASP.NET implementation uses a protected member variable to store // the attributes, so there is no way to loop through them without reflection or some // fancy dynamic subclass implementation. var attributeDictionary = node.GetPrivateFieldValue <NameValueCollection>("_attributes"); foreach (string key in attributeDictionary.Keys) { var attributeName = key; var attributeValue = node[key]; if (reservedAttributeNameProvider.IsRouteAttribute(attributeName)) { routeValues.Add(attributeName, attributeValue); } } }
public SiteMapNode( ISiteMap siteMap, string key, bool isDynamic, ISiteMapNodePluginProvider pluginProvider, IMvcContextFactory mvcContextFactory, ISiteMapNodeChildStateFactory siteMapNodeChildStateFactory, ILocalizationService localizationService, IUrlPath urlPath ) { if (siteMap == null) throw new ArgumentNullException("siteMap"); if (string.IsNullOrEmpty(key)) throw new ArgumentNullException("key"); if (pluginProvider == null) throw new ArgumentNullException("pluginProvider"); if (mvcContextFactory == null) throw new ArgumentNullException("mvcContextFactory"); if (siteMapNodeChildStateFactory == null) throw new ArgumentNullException("siteMapNodeChildStateFactory"); if (localizationService == null) throw new ArgumentNullException("localizationService"); if (urlPath == null) throw new ArgumentNullException("urlPath"); this.siteMap = siteMap; this.key = key; this.isDynamic = isDynamic; this.pluginProvider = pluginProvider; this.mvcContextFactory = mvcContextFactory; this.localizationService = localizationService; this.urlPath = urlPath; // Initialize child collections this.attributes = siteMapNodeChildStateFactory.CreateAttributeDictionary(key, "Attributes", siteMap, localizationService); this.routeValues = siteMapNodeChildStateFactory.CreateRouteValueDictionary(key, "RouteValues", siteMap); this.preservedRouteParameters = siteMapNodeChildStateFactory.CreatePreservedRouteParameterCollection(siteMap); this.roles = siteMapNodeChildStateFactory.CreateRoleCollection(siteMap); this.metaRobotsValues = siteMapNodeChildStateFactory.CreateMetaRobotsValueCollection(siteMap); }
/// <summary> /// Acquires the route values from a given XElement. /// </summary> /// <param name="attribute">The source attribute.</param> /// <param name="routeValues">The route value dictionary to populate.</param> /// <param name="helper">The node helper.</param> /// <returns></returns> protected virtual void AcquireRouteValuesFrom(IMvcSiteMapNodeAttribute attribute, IRouteValueDictionary routeValues, ISiteMapNodeHelper helper) { foreach (var att in attribute.Attributes) { var attributeName = att.Key.ToString(); var attributeValue = att.Value; if (helper.ReservedAttributeNames.IsRouteAttribute(attributeName)) { routeValues[attributeName] = attributeValue; } } }
/// <summary> /// Acquires the route values from a given XElement. /// </summary> /// <param name="node">The node.</param> /// <returns></returns> protected virtual void AcquireRouteValuesFrom(IMvcSiteMapNodeAttribute attribute, IRouteValueDictionary routeValues) { foreach (var att in attribute.Attributes) { var attributeName = att.Key.ToString(); var attributeValue = att.Value; if (reservedAttributeNameProvider.IsRouteAttribute(attributeName)) { routeValues[attributeName] = attributeValue; } } }
/// <summary> /// Acquires the route values from a given <see cref="T:System.Web.SiteMapNode"/>. /// </summary> /// <param name="node">The node.</param> /// <returns></returns> protected virtual void AcquireRouteValuesFrom(System.Web.SiteMapNode node, IRouteValueDictionary routeValues) { // Unfortunately, the ASP.NET implementation uses a protected member variable to store // the attributes, so there is no way to loop through them without reflection or some // fancy dynamic subclass implementation. var attributeDictionary = node.GetPrivateFieldValue<NameValueCollection>("_attributes"); foreach (string key in attributeDictionary.Keys) { var attributeName = key; var attributeValue = node[key]; if (reservedAttributeNameProvider.IsRouteAttribute(attributeName)) { routeValues.Add(attributeName, attributeValue); } } }