Автоматическое использование javascript в приложении blazor

asp.net-core blazor c#

Вопрос

Я разрабатываю библиотеку расширения Blazor.

Одна вещь в этой библиотеке будет повторное использование метода javascript alert () . Я знаю, как это сделать, это связано с добавлением этого на странице .cshtml:

<script>
  Blazor.registerFunction('Alert', (message) => {
      alert(message);
  });
</script>

и это в моем коде:

public void Alert(string message)
{
     RegisteredFunction.Invoke<object>("Alert", message);
}

Я хотел бы, чтобы часть javascript каким-то образом была автоматически введена в html, если вы используете мой пакет (или, может быть, всегда). Не уверен, что это возможно (пока)

Есть идеи по этому поводу?

Принятый ответ

редактировать

Начиная с blazor 0.2 есть более поддерживаемый способ сделать это. Посмотрите на шаблон blazorlib для примера:

dotnet new -i Microsoft.AspNetCore.Blazor.Templates

dotnet new blazorlib

0,1 ответ

Я закончил тем, что создал свой собственный компонент blazor, содержащий мой javascript, например:

public class BlazorExtensionScripts : Microsoft.AspNetCore.Blazor.Components.BlazorComponent
{

    protected override void BuildRenderTree(Microsoft.AspNetCore.Blazor.RenderTree.RenderTreeBuilder builder)
    {
        builder.OpenElement(0, "script");
        builder.AddContent(1, "Blazor.registerFunction('Alert', (message) => { alert(message); });");
        builder.CloseElement();
    }
}

И добавив его в свой app.cshtml следующим образом:

@addTagHelper *, BlazorExtensions

<Router AppAssembly=typeof(Program).Assembly />

<BlazorExtensionScripts></BlazorExtensionScripts>



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему