我正在开发一个Blazor扩展库。
此库中的一件事是重用javascript alert()方法。 我知道如何做到这一点,这涉及在.cshtml页面中添加它:
<script>
Blazor.registerFunction('Alert', (message) => {
alert(message);
});
</script>
这在我的代码中:
public void Alert(string message)
{
RegisteredFunction.Invoke<object>("Alert", message);
}
如果您使用我的包(或者可能总是),我希望javascript部分以某种方式在html中自动注入。不确定这是否可行(还)
有关于此的任何想法吗?
答案 0 :(得分:8)
修改强>
因为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>