在Blazor视图中调用异步方法

问题描述 投票:0回答:1

我有一个服务器端的blazor客户端,我正在尝试通过登录检查来修改MainLayout剃刀页面。我目前正在使用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:执行了隐式处理程序方法,返回了Microsoft.AspNetC结果)',并且带有内部异常- > NullReferenceException:对象引用未设置为对象的实例。

但是从我看到的内容来看,AppState已正确注入,而本地存储似乎已正确注入了AppState。

@if (!AppState.IsLoggedIn().Result)
{
    <a href="Login" target="_blank">Login</a>
}

所以我的问题是解决此问题的正确方法是什么,有没有一种方法可以在剃须刀页面中执行异步方法?

c# blazor blazor-server-side
1个回答
0
投票

有没有一种方法可以在剃须刀页面中执行异步方法?

© www.soinside.com 2019 - 2024. All rights reserved.