Example #1
0
        public ITagHelper Create(ITagHelperFactory factory, ViewContext context, FilterArguments arguments,
                                 out TagHelperAttributeList contextAttributes, out TagHelperAttributeList outputAttributes)
        {
            contextAttributes = new TagHelperAttributeList();
            outputAttributes  = new TagHelperAttributeList();

            ITagHelper tagHelper;

            if (_activatorByService != null)
            {
                tagHelper = _activatorByService(context);
            }
            else
            {
                tagHelper = _activatorByFactory(factory, context);
            }

            foreach (var name in arguments.Names)
            {
                var propertyName = name.ToPascalCaseUnderscore();

                var found = false;

                if (_setters.TryGetValue(propertyName, out var setter))
                {
                    try
                    {
                        setter(tagHelper, arguments[name]);
                        found = true;
                    }
                    catch (ArgumentException e)
                    {
                        throw new ArgumentException("Incorrect value type assigned to a tag.", name, e);
                    }
                }

                var attribute = new TagHelperAttribute(name.Replace('_', '-'), arguments[name].ToObjectValue());

                contextAttributes.Add(attribute);

                if (!found)
                {
                    outputAttributes.Add(attribute);
                }
            }

            return(tagHelper);
        }
        public ITagHelper Create(ITagHelperFactory factory, ViewContext context, FilterArguments arguments,
                                 out TagHelperAttributeList contextAttributes, out TagHelperAttributeList outputAttributes)
        {
            contextAttributes = new TagHelperAttributeList();
            outputAttributes  = new TagHelperAttributeList();

            var tagHelper = _activator(factory, context);

            foreach (var name in arguments.Names)
            {
                var propertyName = Filters.LiquidViewFilters.LowerKebabToPascalCase(name);

                var found = false;

                if (_setters.TryGetValue(propertyName, out var setter))
                {
                    try
                    {
                        setter(tagHelper, arguments[name]);
                        found = true;
                    }
                    catch (ArgumentException e)
                    {
                        throw new ArgumentException("Incorrect value type assigned to a tag.", name, e);
                    }
                }

                var attr = new TagHelperAttribute(name.Replace("_", "-"), arguments[name].ToObjectValue());

                contextAttributes.Add(attr);

                if (!found)
                {
                    outputAttributes.Add(attr);
                }
            }

            return(tagHelper);
        }
Example #3
0
        public RazorHotReload(
            IRazorViewEngine razorViewEngine,
            IRazorPageActivator razorPageActivator,
            ITagHelperFactory tagHelperFactory,
            IViewCompilerProvider viewCompilerProvider,
            ITagHelperComponentPropertyActivator tagHelperComponentPropertyActivator,
            ApplicationPartManager applicationPartManager)
        {
            // For Razor view services, use the service locator pattern because they views not be registered by default.
            _razorCompiledItemFeatureProvider = applicationPartManager.FeatureProviders.OfType <RazorCompiledItemFeatureProvider>().FirstOrDefault();

            if (viewCompilerProvider is DefaultViewCompiler defaultViewCompiler)
            {
                _defaultViewCompiler = defaultViewCompiler;
            }

            if (razorViewEngine.GetType() == typeof(RazorViewEngine))
            {
                _razorViewEngine = (RazorViewEngine)razorViewEngine;
            }

            if (razorPageActivator.GetType() == typeof(RazorPageActivator))
            {
                _razorPageActivator = (RazorPageActivator)razorPageActivator;
            }

            if (tagHelperFactory is DefaultTagHelperFactory defaultTagHelperFactory)
            {
                _defaultTagHelperFactory = defaultTagHelperFactory;
            }

            if (tagHelperComponentPropertyActivator is TagHelperComponentPropertyActivator defaultTagHelperComponentPropertyActivator)
            {
                _tagHelperComponentPropertyActivator = defaultTagHelperComponentPropertyActivator;
            }
        }
 public LiquidTagHelperFactory(ApplicationPartManager partManager, ITagHelperFactory factory)
 {
     _partManager = partManager;
     _factory     = factory;
 }
Example #5
0
 public static ITagHelper CreateTagHelper(ITagHelperFactory tagHelperFactory, ViewContext viewContext)
 {
     return(tagHelperFactory.CreateTagHelper <T>(viewContext));
 }
 public MediaTagHelper(ITagHelperFactory tagHelperFactory)
 {
     _tagHelperFactory = tagHelperFactory;
 }
Example #7
0
        public ITagHelper Create(ITagHelperFactory factory, ViewContext context, FilterArguments arguments,
                                 out TagHelperAttributeList contextAttributes, out TagHelperAttributeList outputAttributes)
        {
            contextAttributes = new TagHelperAttributeList();
            outputAttributes  = new TagHelperAttributeList();

            ITagHelper tagHelper;

            if (_activatorByService != null)
            {
                tagHelper = _activatorByService(context);
            }
            else
            {
                tagHelper = _activatorByFactory(factory, context);
            }

            var expresionProvider = context.HttpContext.RequestServices.GetRequiredService <ModelExpressionProvider>();

            var viewData = context.ViewData as ViewDataDictionary <object>;

            if (viewData == null)
            {
                viewData = new ViewDataDictionary <object>(context.ViewData);
            }

            foreach (var name in arguments.Names)
            {
                var propertyName   = name.ToPascalCaseUnderscore();
                var dictionaryName = String.Empty;
                var dictionaryKey  = String.Empty;

                if (!_setters.TryGetValue(propertyName, out var setter))
                {
                    var index = name.LastIndexOf('_');

                    if (index > -1)
                    {
                        dictionaryName = name.Substring(0, index + 1);
                        dictionaryKey  = name.Substring(index + 1);

                        if (dictionaryName.Length > 0 && dictionaryKey.Length > 0)
                        {
                            _setters.TryGetValue(dictionaryName, out setter);
                        }
                    }
                }

                var found = false;

                if (setter != null)
                {
                    try
                    {
                        setter(tagHelper, expresionProvider, viewData, dictionaryKey, arguments[name]);
                        found = true;
                    }
                    catch (ArgumentException e)
                    {
                        throw new ArgumentException("Incorrect value type assigned to a tag.", name, e);
                    }
                }

                var attribute = new TagHelperAttribute(name.Replace('_', '-'), arguments[name].ToObjectValue());

                contextAttributes.Add(attribute);

                if (!found)
                {
                    outputAttributes.Add(attribute);
                }
            }

            return(tagHelper);
        }