C# 如何在blazor中刷新页面重置值后重新设置?
当用户进入C# 如何在blazor中刷新页面重置值后重新设置?,c#,.net-core,blazor,blazor-server-side,session-storage,C#,.net Core,Blazor,Blazor Server Side,Session Storage,当用户进入ISessionStorageService正常工作后,我想在仪表板页面中获得当前使用的登录名,仪表板在布局页面中获得当前用户登录名的布局获取会话存储值 版面页 注意:用户登录并在页面之间切换可以正常工作,但当我需要刷新页面时,会出现错误 InvalidOperationException:此时无法发出JavaScript互操作调用。这是因为组件正在进行静态渲染。启用预渲染时,只能在OnAfterRenderAsync生命周期方法期间执行JavaScript互操作调用。 由于使用预呈现
ISessionStorageService
正常工作后,我想在仪表板页面中获得当前使用的登录名,仪表板在布局页面中获得当前用户登录名的布局获取会话存储
值
版面页
注意:用户登录并在页面之间切换可以正常工作,但当我需要刷新页面时,会出现错误
InvalidOperationException:此时无法发出JavaScript互操作调用。这是因为组件正在进行静态渲染。启用预渲染时,只能在OnAfterRenderAsync生命周期方法期间执行JavaScript互操作调用。
由于使用预呈现,因此在执行此过程时不能调用JavaScript方法。而是设置对UpdateUserInfo方法的调用 在OnAfterRender(异步)对中,如下所示:
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if( firstRender )
{
await UpdateUserInfo();
InvokeAsync( () => StateHasChanged());
}
}
希望这有帮助…您不能在该事件上执行js互操作,请像错误中提到的那样尝试。您的意思是调用“OnAfterRenderAsync”?当我在AfterRenderAsync上调用
OnAfterRenderAsync
时,userInfo是空的,但是OnAfterRenderAsync
字段未更新这是另一个问题,与第一个问题无关。我想你需要重新提交你的页面。用法:InvokeAsync(()=>StateHasChanged());
await SessionStorage.SetItemAsync("LoginUser", loginUser);
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if( firstRender )
{
await UpdateUserInfo();
InvokeAsync( () => StateHasChanged());
}
}