在Blazor WebAssembly中,可以通过以下步骤来从上一页的查询字符串中获取初始化参数:
Microsoft.AspNetCore.WebUtilities
命名空间,以便使用QueryHelpers
类。using Microsoft.AspNetCore.WebUtilities;
[Parameter]
属性来接收初始化参数。这个属性应该被标记为可选参数,并且类型应该是一个包含所需参数的模型。[Parameter]
public MyModel MyParameter { get; set; } = new MyModel();
OnInitializedAsync
方法中,通过NavigationManager
的Uri
属性获取当前页面的URL。然后,使用QueryHelpers.ParseQuery
方法解析查询字符串为一个Dictionary
。protected override async Task OnInitializedAsync()
{
var uri = NavigationManager.Uri;
var uriWithoutBase = uri.Substring(uri.IndexOf("?") + 1); // Remove base URL
var queryParams = QueryHelpers.ParseQuery(uriWithoutBase);
if (queryParams.ContainsKey("myParameter"))
{
var myParameterValue = queryParams["myParameter"];
// Do further processing with the parameter value if needed
MyParameter.MyProperty = myParameterValue;
}
await base.OnInitializedAsync();
}
myParameter
参数时,它将会在组件的MyParameter
属性中进行初始化。例如,如果你的URL是https://example.com/some-page?myParameter=HelloWorld
,那么MyParameter.MyProperty
的值将是HelloWorld
。
记得在使用NavigationManager
之前,将其注入到组件中。你可以在组件的构造函数中添加一个NavigationManager
参数,并将其赋值给一个类级别的变量。
private NavigationManager NavigationManager;
public YourComponent(NavigationManager navigationManager)
{
NavigationManager = navigationManager;
}
这样,你就可以在组件中使用NavigationManager
来获取当前页面的URL了。