【发布时间】:2020-02-10 00:33:18
【问题描述】:
我有一个服务器端 blazor 客户端,我正在尝试通过登录检查来修改 MainLayout razor 页面。我目前正在使用 Blazored 进行本地存储保存,并且我目前正在使用来查看是否保存了令牌以查看用户是否已登录,但是我不确定如何在 razor 页面的 if 语句中翻译它,因为它想要异步方法。
我的登录检查非常简单,如下所示。
public async Task<bool> IsLoggedIn()
{
return await m_localStorage.ContainKeyAsync("token").ConfigureAwait(false);
}
在我的 Razor 页面中,我正在执行此语句检查 - 这显然不起作用,因为没有异步修饰符
@if (!await AppState.IsLoggedIn()) //Requires async modifier
{
<a href="Login" target="_blank">Login</a>
}
我也尝试过使用 .Result 属性来执行此操作,但这会导致引发异常:(System.AggregateException: 'Information: Executed an implicit handler method, returned result Microsoft.AspNetC)' with an internal-exception -> NullReferenceException:对象引用未设置为对象的实例。
但据我所见,AppState 已正确注入,并且本地存储似乎已正确注入 AppState。
@if (!AppState.IsLoggedIn().Result)
{
<a href="Login" target="_blank">Login</a>
}
所以我的问题是解决这个问题的正确方法是什么,有没有办法在剃须刀页面中执行异步方法?
【问题讨论】:
标签: c# blazor blazor-server-side