Blazor WASM应用程序中的Program.Main
方法具有string[] args
参数。ASP。NET核心主机站点将参数传递到这些?在应用程序构建之前,我需要能够从服务器读取值。
没有默认的方式传入这些参数,因为它们在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>
在您的程序.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核心的索引页面作为index.cshtml页面提供。并在服务器端设置逻辑,用所需的参数填充脚本中的数组。
Program.Main
由blazor.webassembly.js
调用,此处为:
invokeEntrypoint(assemblyName, null);
它命中一个dotnet静态方法,然后将null转换为一个空数组。
所以不,现在不可能向它传递参数,因为你只得到一个空数组。