在Blazor的实现中,可以使用NavMenu组件来创建应用程序导航。但是,如果您尝试使用@page'/”和查询字符串来定义Blazor页面时,NavMenu组件不会显示默认选项。 要解决此问题,您可以使用以下方法之一:
@page "/"
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.WebUtilities
@attribute [QueryParameter("id")] string id
在这个例子中,我们使用QueryParameter
属性来捕获查询字符串参数id,并将选中的导航项传递给NavMenu组件。
2. 在页面中使用@using语句导入NavigationManager
服务,并在OnInitializedAsync
生命周期方法中获取查询字符串并将其传递给NavMenu组件。例如:
@page "/"
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.WebUtilities
@using Microsoft.AspNetCore.Components
@inject NavigationManager NavigationManager
@code {
private string selected;
protected override async Task OnInitializedAsync()
{
var uri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
var query = QueryHelpers.ParseQuery(uri.Query);
if (query.TryGetValue("selected", out var selectedValue))
{
selected = selectedValue;
}
}
}
在这个例子中,我们使用NavigationManager
服务来获取当前页面的URI和查询字符串,并使用QueryHelpers
类来解析查询字符串。然后,我们将选中的导航项传递给NavMenu组件。
无论您选择哪种方法,NavMenu组件都应该能够正确显示默认选项和查询字符串。