Blazor未检测到模型已更新

时间:2019-02-01 15:03:45

标签: asp.net-core .net-core blazor

我目前遇到一个问题,即从我的api获取数据后,视图仍然认为数据为空。请参见以下代码:

查看:

@if (goals == null)
{
    <Loader />
}
else if (goals.Count == 0)
{
    <div class="center-text">
        <h2>It doesn't look like you have any goals create yet!</h2>
    </div>
}
else
{
    <h1>found stuff!</h1>
}

@functions {
List<GoalViewModel> goals;

protected override async Task OnInitAsync()
{
    var token = await LocalStorage.GetItem<string>("AuthToken");
    var httpClient = HttpClientExtensions.GetAuthHttpClient(token);
    goals = await httpClient.GetJsonAsync<List<GoalViewModel>>(ClientSettings.GetHostRoot() + "/api/Goals/");
}
}

被击中的控制器动作如下所示(我已验证它已被正确调用并正在通过chrome网络标签和提琴手返回数据):

        [HttpGet]
        public IActionResult Get()
        {
            try
            {
                var goalIndexDtos = _goalManager.GetAll(_claimResolver.User.FindFirstValue(ClaimTypes.NameIdentifier));
                var goalViewModels = Mapper.Map<List<GoalViewModel>>(goalIndexDtos);

                return Ok(goalViewModels);
            }
            catch (Exception ex)
            {
                log.Error(FormatError(nameof(GoalsController), nameof(Get), ex));
                return BadRequest(ex);
            }
        }

我的问题是<Loader />总是显示,而我应该看到<h1>found stuff!</h1>,因为我的控制器正在适当地返回数据,并且blazor视图代码已成功对数据进行反序列化。

我在这里想念什么?我在应用程序的其他地方也做非常相似的事情,它们似乎工作正常。我已经一遍又一遍地将该用例与其他用例进行了比较,没有发现任何不同。

在从服务器检索目标的调用之后,我甚至还停留了Console.WriteLine(goals.Count);行,它正确地将1打印到控制台。

更新:在尝试了所有可能的内容之后,我从db表中删除了要检索goals的所有数据。这将从我的控制器返回一个空列表。在这种情况下,<h2>It doesn't look like you have any goals create yet!</h2>确实可以打印!但是,第二秒钟我添加一行,并返回一个计数为1的列表,我得到的只是一个加载器

已解决:多次清洗,构建,重建和关闭/打开Visual Studio之后,我的问题仍然存在。只是在重新启动计算机后,它才能按预期开始工作。

0 个答案:

没有答案
相关问题