Example #1
0
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (ProviderType == null)
            {
                throw new ArgumentNullException(nameof(ProviderType));
            }
            if (!typeof(ITagHelpersProvider).IsAssignableFrom(ProviderType))
            {
                throw new ArgumentException(nameof(ProviderType));
            }
            var instance = ViewContext.HttpContext.RequestServices.GetService(ProviderType) as ITagHelpersProvider;

            if (instance == null)
            {
                throw new ArgumentException(nameof(ProviderType));
            }
            string childContent;

            output.TagName = string.Empty;
            using (var providerContext = new TagHelpersProviderContext(instance, ViewContext))
            {
                childContent = output.Content.IsModified ? output.Content.GetContent() :
                               (await output.GetChildContentAsync()).GetContent();
            }
            output.Content.SetHtmlContent(childContent);
        }
Example #2
0
 public TagHelpersProviderContext(ITagHelpersProvider provider, ViewContext context)
 {
     this.provider      = provider;
     this.context       = context;
     oldProviderContext = context.ViewData[field] as TagHelpersProviderContext ??
                          new TagHelpersProviderContext(context.HttpContext.RequestServices.GetService <DefaultTagHelpersProvider>());
     if (oldProviderContext == provider)
     {
         return;
     }
     oldProviderContext.provider.UnPrepareViewContext(context);
     context.ViewData[field]         = this;
     context.ClientValidationEnabled = provider.RequireUnobtrusiveValidation;
     provider.PrepareViewContext(context);
 }