Blazor WASM应用程序中的Program.Main
方法具有string[] args
参数。 ASP.NET Core宿主站点是否可以向其中传递参数?在构建应用之前,我需要能够从服务器读取一个值。
答案 0 :(得分:2)
Program.Main
由blazor.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 页面。并在服务器端设置逻辑以使用所需参数填充脚本中的数组。