5

我正在开发一个 Blazor 扩展库。

这个库中的一件事是重用 javascript alert()方法。我知道如何做到这一点,这涉及在 .cshtml 页面中添加它:

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

这在我的代码中:

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

如果您使用我的包(或者可能总是),我希望 javascript 部分以某种方式自动注入到 html 中。不确定这是否可能(还)

对此有什么想法吗?

4

1 回答 1

9

编辑

从 blazor 0.2 开始,有一种更受支持的方式来执行此操作。以 blazorlib 模板为例:

dotnet new -i Microsoft.AspNetCore.Blazor.Templates

dotnet new blazorlib

0.1 答案

我最终创建了包含我的 javascript 的自己的 blazor 组件,如下所示:

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>
于 2018-03-27T19:43:44.703 回答