У меня в настоящее время проблема, когда после того, как я получаю данные из моего 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/");
}
}
действие контроллера выглядит следующим образом (я убедился, что он вызывается правильно и возвращает данные через сеть Chrometab и fiddler):
[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
к консоли.
ОБНОВЛЕНИЕ: поиграв со всем, что я мог придумать, я удалил все данные из таблицы БД, из которой goals
извлекается.это возвращает пустой список от моего контроллера.В этом случае <h2>It doesn't look like you have any goals create yet!</h2>
печатает как положено!ОДНАКО, когда я добавляю строку и возвращается список с номером 1, все, что я получаю, это загрузчик
РЕШЕНО: После очистки, сборки, перестройки и закрытия / открытия Visual Studio несколько раз моя проблема осталась.Только после перезапуска моей машины это начало работать как ожидалось.