为什么数据不加载从NavLink点击?



我有一个NavLink指向一个razor页面。链接解析正确,但页面没有加载数据。如果我只是刷新页面,东西就会正确加载。

NavMenu。这样可以正确地构建链接。https://localhost: 7000/projecttasks/2

@foreach (var dsIe in DsIeService.DsIes)
{
<div class="nav-item px-2">
<NavLink class="nav-link" href="@($"projecttasks/{dsIe.Id}")">
@dsIe.Name
</NavLink>
</div>
}

页面。链接被正确定向到https://localhost:7000/projecttasks/2

@page "/projecttasks/{ieId:int}"
@inject IProjectTaskService ProjectTaskService
...
[Parameter]
public int ieId { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
await ProjectTaskService.GetProjectTasks(ieId);
ProjectTaskService.ProjectTaskChanged += StateHasChanged;
}

客户服务。

public async Task GetProjectTasks(int ieId)
{
var response = await _httpClient.GetFromJsonAsync<ServiceResponse<List<ProjectTask>>>($"api/projecttask/{ieId}");
if (response is { Data: { } })
ProjectTasks = response.Data;
ProjectTaskChanged?.Invoke();
}

服务器服务。

public async Task<ServiceResponse<List<ProjectTask>>> GetProjectTasksAsync(int ieId)
{
var projectTask = await _context.ProjectTasks
.Include(d => d.DailyStatus)
.Include(p => p.ProjectStatus)
.Where(i => i.DsIeId == ieId)
.OrderBy(f => f.FiNumber)
.ThenBy(c => c.CaseNumber)
.ToListAsync();
return new ServiceResponse<List<ProjectTask>>
{
Data = projectTask
};
}

控制器。

[HttpGet("{ieId}")]
public async Task<ActionResult<ServiceResponse<List<ProjectTask>>>> GetProjectTasks(int ieId)
{
var result = await _projectTaskService.GetProjectTasksAsync(ieId);
return Ok(result);
}

当你的Navlink转到同一个页面,只是一个不同的参数,然后OnInitialized不被调用。

protected override void OnInitialized()
{
ProjectTaskService.ProjectTaskChanged += StateHasChanged;
}
protected override async Task OnParametersSetAsync()
{
await ProjectTaskService.GetProjectTasks(ieId);
}