在blazor應用程序中自動注入javascript

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回答

我最終創建了自己的包含我的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>


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因