我有一个服务器端的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:“信息:执行了隐式处理程序方法,返回结果Microsoft.AspNetC)”,内部异常->NullReferenceException:对象引用未设置为对象实例。
但从我所看到的,AppState被正确地注入,本地存储似乎被正确地注入到AppState中。
@if (!AppState.IsLoggedIn().Result)
{
<a href="Login" target="_blank">Login</a>
}
所以我的问题是,正确的方法是什么,有没有办法在razor页面中执行异步方法?