Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Blazor不刷新用户界面_C#_User Interface_Blazor - Fatal编程技术网

C# Blazor不刷新用户界面

C# Blazor不刷新用户界面,c#,user-interface,blazor,C#,User Interface,Blazor,我从Blazor开始,我做了一个非常小的项目,有一个表和一个分页组件,但是当分页结果时,它不会刷新UI 如果我进行调试,我会发现在分页时获得的结果是正确的,但是UI没有改变 我将我的代码留给您,看看您是否可以帮助我: @page”/test @使用BlazorPagination @使用System.Text.Json @注入IJSRuntime js @注入HttpClient http 试验 @foreach(var t in_data.Results) { @t、 身份证 @t、 正文 @

我从Blazor开始,我做了一个非常小的项目,有一个表和一个分页组件,但是当分页结果时,它不会刷新UI

如果我进行调试,我会发现在分页时获得的结果是正确的,但是UI没有改变

我将我的代码留给您,看看您是否可以帮助我:

@page”/test
@使用BlazorPagination
@使用System.Text.Json
@注入IJSRuntime js
@注入HttpClient http
试验
@foreach(var t in_data.Results)
{
@t、 身份证
@t、 正文
@t、 价值观
}
@代码{
列表测试列表;
私有页面结果数据;
专用int_页面=1;
受保护的覆盖无效OnInitialized()
{
负载测试();
}
无效载荷试验()
{
HttpClient http=新的HttpClient();
var httpResponse=http.GetAsync($)https://localhost:44348/api/test).GetAwaiter().GetResult();
if(httpResponse.IsSuccessStatusCode)
{
var responseString=httpResponse.Content.ReadAsStringAsync().GetAwaiter().GetResult();
testList=JsonSerializer.Deserialize(responseString,
新的JsonSerializerOptions(){PropertyNameCaseSensitive=true});
_data=testList.AsQueryable().ToPagedResult(_第10页);
}
此.StateHasChanged();
}
}
使用异步:

OnPageChanged="(async e => { _page = e; await LoadTest(); })"
受保护的覆盖任务OnInitializedAsync()
{
等待加载测试();
}
异步ValueTask负载测试()
{
HttpClient http=新的HttpClient();
var httpResponse=await http.GetAsync($)https://localhost:44348/api/test");
if(httpResponse.IsSuccessStatusCode)
{
var responseString=wait-httpResponse.Content.ReadAsStringAsync();
testList=JsonSerializer.Deserialize(responseString,
新的JsonSerializerOptions(){PropertyNameCaseSensitive=true});
_data=testList.AsQueryable().ToPagedResult(_第10页);
}
//InvokeAsync强制在UI线程上执行StateHasChanged。
等待调用同步(StateHasChanged);
}

旁注:(快到2021年了)

谢谢你的回答,我把代码修改成了异步的,但问题仍然存在

async Task LoadTest()
{
    HttpClient http = new HttpClient();

        testList = await http.GetFromJsonAsync<List<Common.TestEntity>>($"https://localhost:44348/api/test");
        _data = testList.AsQueryable().ToPagedResult(_page, 10);

        await InvokeAsync(() => StateHasChanged());
}

async Task LoadTest()
{
HttpClient http=新的HttpClient();
testList=wait http.GetFromJsonAsync($)https://localhost:44348/api/test");
_data=testList.AsQueryable().ToPagedResult(_第10页);
等待InvokeAsync(()=>StateHasChanged());
}

关于IHttpClientFactory,我还不太了解该主题,因此还没有将其替换。

我最近所做的更改是:

protected override void OnInitialized()
{
负载测试();
}
异步ValueTask负载测试()
{
HttpClient http=新的HttpClient();
testList=wait http.GetFromJsonAsync($)https://localhost:44348/api/test");
_data=testList.AsQueryable().ToPagedResult(_第10页);
等待调用同步(StateHasChanged);
}
我还尝试了:

受保护的覆盖任务OnInitializedAsync()
{
等待加载测试();
}

也将更改初始化为完成。
等待InvokeAsync(状态已更改),我不确定优化器是否会消除lambda。@HenkHolterman它会。。但是你的权利不需要在lambda中包装。我没有查看这个寻呼机的源代码,但是我非常确定InvokeAsync根本不是必需的。“但这也不会有什么坏处。”亨克沃特曼说,“是的,我把这个反应当作未知。”。没有太多的信息只能做出假设。这就是为什么我不进行反序列化。现在如何调用LoadTest()?此更改报告未完成。在异步任务OnInitializedAsync()和OnPageChanged=“(async e=>{u page=e;wait LoadCbu();})”上调用了LoadTest()。实际的分页现在发生在/api/test调用的错误一侧。这会返回多少条记录?/api/test只返回50条记录,当我调试时,我发现这是最后的选择,您可以在foreach()循环中用
替换
。mmm不工作这些不是答案。您可以在问题的底部添加更新。
async Task LoadTest()
{
    HttpClient http = new HttpClient();

        testList = await http.GetFromJsonAsync<List<Common.TestEntity>>($"https://localhost:44348/api/test");
        _data = testList.AsQueryable().ToPagedResult(_page, 10);

        await InvokeAsync(() => StateHasChanged());
}