如何在Blazor服务器端呈现Javascript?

时间:2019-10-12 07:42:58

标签: asp.net-core .net-core blazor

我必须在Blazor服务器端项目中使用javascript库。

该库正在用于连接到APP。它需要通过在后端使用get方法获取访问令牌来进行初始化。

现在,get方法可以成功获取访问令牌,下一步是将其呈现在字体末端以初始化库。

但是,我想在code中添加一个_Host.cshtml块,但似乎根本不支持。

enter image description here

然后,我尝试将代码和script块修改为index.cshtml。好吧,现在它报告script块仍不会在网页上呈现。

enter image description here

我该如何解决?你能帮我吗?谢谢。


Blazor与没有Rendersection方法的原始asp.net内核不同。

这是关于此的另一个问题:@RenderSection Equivalent in Blazor?

2 个答案:

答案 0 :(得分:1)

您只能在Blazor Componenets的外部中添加JavaScript。您可以将它们添加到index.html或_Host.cshtml中。您所有的外部功能都将存在,或位于组件dll中。在Blazor中,您可以调用这些函数并传递结果

答案 1 :(得分:0)

我找到了另一种方法来实现这一目标:

这是js:

window.TestFunctions = {
    InvokeAlert: function (AlertString) {
        alert(AlertString);
    }
};

这是Blazor的代码:

protected override void OnInitialized()
    {
        Task.Run(() =>
        {
            var request = new HttpRequestMessage(HttpMethod.Get,
                string.Format(NavigationManager.Uri+"Callback/JSInitialise"));

            var client = _clientFactory.CreateClient();
            var response = client.SendAsync(request);

            while (true)
            {
                if (!string.IsNullOrEmpty(_SignatureModel.signature))
                {
                    JSRuntime.InvokeVoidAsync("TestFunctions.InvokeAlert", _SignatureModel.signature);
                    break;
                }
                Task.Delay(200);
            }
        });
    }

好吧,现在可以使用。