在Blazor WebAssembly应用程序中如何将(string [] args)传递给Program.Main?

时间:2020-03-24 12:47:28

标签: blazor webassembly

Blazor WASM应用程序中的Program.Main方法具有string[] args参数。 ASP.NET Core宿主站点是否可以向其中传递参数?在构建应用之前,我需要能够从服务器读取一个值。

2 个答案:

答案 0 :(得分:2)

Program.Mainblazor.webassembly.js here调用:

invokeEntrypoint(assemblyName, null);

命中dotnet static method,然后将null转换为空数组。

所以不,现在无法传递参数,因为您只会得到一个空数组。

答案 1 :(得分:0)

没有默认的方式来传递这些参数,因为它们确实在 blazor.webassembly.js 中被硬编码为 null。但是,可以通过 javascript 提供它们。

在您的索引页中,包括以下内容:

<!-- Put this script block above the one that loads blazor.webassembly.js -->
<script>
    window.startupParams = function() { return ['first', 'second', 'third']; };
</script>

在您的 Program.cs 中:

public static async Task Main(string[] args)
{
    var builder = WebAssemblyHostBuilder.CreateDefault(args);
    var js = (IJSInProcessRuntime)builder.Services.BuildServiceProvider().GetRequiredService<IJSRuntime>();
    var startupParams = js.Invoke<string[]>("startupParams");

    // ... etc ...
}

如在此 github 答案中所见。

我们从 asp.net core 提供索引页面,作为 index.cshtml 页面。并在服务器端设置逻辑以使用所需参数填充脚本中的数组。