public class Startup { public void ConfigureServices(IServiceCollection services) { //... }
public void Configure(IApplicationBuilder app)
{
app.UseRouting(); // 启用路由功能
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub(); // 映射Blazor端点
endpoints.MapFallbackToPage("/_Host"); // 映射回滚页面
});
}
}
public class StateContainer { private readonly NavigationManager _navigationManager;
public StateContainer(NavigationManager navigationManager)
{
_navigationManager = navigationManager;
}
private IDictionary _state = new Dictionary();
public T Get(string key)
{
if (_state.TryGetValue(key, out object value))
{
return (T)value;
}
return default(T);
}
public void Set(string key, object value)
{
_state[key] = value;
UpdateQueryString();
}
private void UpdateQueryString()
{
List parameters = new List();
foreach (KeyValuePair item in _state)
{
parameters.Add($"{item.Key}={item.Value}");
}
string queryString = string.Join("&", parameters);
_navigationManager.NavigateTo($"?{queryString}");
}
}
@page "/"
@inject StateContainer _stateContainer
Current count: @_stateContainer.Get
@code { private int _currentCount = 0;
protected override Task OnInitializedAsync()
{
_stateContainer.Set("count", _currentCount);
return base.OnInitializedAsync();
}
private void IncrementCounter()
{
_currentCount++;
_