Skip to content
This repository was archived by the owner on Dec 14, 2018. It is now read-only.
This repository was archived by the owner on Dec 14, 2018. It is now read-only.

[Feature] Inject TagHelperComponents at runtime #6282

Closed
@sebastienros

Description

@sebastienros

Goal:
As a developer, be able to inject a script dynamically. For example from a controller, a filter, or a service.

Design suggestion:

  • Create a ITagHelperComponentManager for devs to resolve it and add new ITagHelperComponent instances.
  • ITagHelperComponentManager could be a DI-registered composite of ITagHelperComponent. (need to solve what order it should have compared to other DI-registered ones)
  • Create a ScriptTagHelperComponent and other types of resources that can be used directly from code.

Usages examples:

  • From a view or a view component, we can register custom scripts
    • Inject the ITagHelperComponentManager in the view
    • Call `tagHelperComponentManager.Add(new ScriptTagHelperComponent("jquery.js"))
  • From a filter or a controller, inject a script based on some condition.

Other ideas:
We could also provide some methods on the manager, or extension methods, to prevent duplicate scripts. Like TryAddScript(string), TryAddStylesheet(string). These could also be available as Tag Helpers.
A future need will be to provide another service to handle a sort of DI container for client assets (dependencies, orders, cdn, hash, async, ...) that would ultimately register components on this ITagHelperComponentManager.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

    close