Blade.Pipelines.ResolveRenderingDataSource.HandleStaticItems.DoProcess C# (CSharp) Метод

DoProcess() публичный Метод

public DoProcess ( ResolveRenderingDataSourceArgs args ) : void
args ResolveRenderingDataSourceArgs
Результат void
        public override void DoProcess(ResolveRenderingDataSourceArgs args)
        {
            // ignore data sources that are not absolute paths or IDs
            if (!(args.DataSource.StartsWith("/") || args.DataSource.StartsWith("{"))) return;

            // the split on | supports multilist style ID lists (but also path lists technically...)
            foreach (string identifier in args.DataSource.Split('|'))
            {
                string[] parts = identifier.Split(':');

                // verify bounds (for an item multilist identifier e.g. "/sitecore/content/foo:fieldName")
                // note: relative paths are not supported with multilist identifiers' source item
                Assert.IsTrue(parts.Length > 0, "parts > 0");
                Assert.IsTrue(parts.Length < 3, "parts < 3");

                Item item = args.ContextItem.Database.GetItem(parts[0]);

                // couldn't resolve data source item, skip entry
                if (item == null)
                {
                    Log.Warn(string.Format("HandleStaticItems: A rendering on {0} contains an invalid item reference: {1}", args.ContextItem.Paths.FullPath, parts[0]), this);
                    continue;
                }

                // parse a item multilist field reference
                if (parts.Length > 1)
                {
                    MultilistField field = item.Fields[parts[1]];

                    // invalid field reference
                    if (field == null || string.IsNullOrEmpty(field.Value))
                    {
                        Log.Warn(string.Format("HandleStaticItems: The multilist field {0} on {1} referred to in a rendering data source on {2} did not exist.", item.Paths.FullPath, parts[1], args.ContextItem.Paths.FullPath), this);
                        continue;
                    }

                    args.DataSourceItems.AddRange(field.GetItems());

                    return;
                }

                // add a single identifier from the data source string
                args.DataSourceItems.Add(item);
            }

            args.HasItems = true;
        }
HandleStaticItems