在我的 Blazor 服务器应用程序中,我想在标题中显示 razor.cs 页面的消息。但我无法将消息从剃刀页面传递到标题

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

我有一个 Blazor 服务器端应用程序 (.Net7),由侧边栏、标题和正文部分组成。在正文部分,可以通过侧边栏导航到多个剃刀页面。 在所有 razor 页面中都会生成一些与页面功能相关的错误消息。所有这些错误消息都应显示在公共标头部分中。标头部分包含 razor 页面“razor_header”。

我已在上述页面中编写了以下代码,但我无法将错误消息从剃刀页面正确传递到标题剃刀页面。尽管生成了错误消息(我可以通过日志文件检查),但我并没有立即在标题页中看到它们。大多数情况下,它们会在其他事件中延迟显示。我的代码中缺少什么?我在 Blazor 服务器端不太擅长。我想我缺少一些基本的东西。我认为 Blazor 中的绑定也在页面之间起作用。但我认为事实并非如此。

我的 razor_header 页面

@inject TagService TagService
<div>
    <h2>@TagService.Message_Main</h2>        
</div>

我的razor_page_1.cs(rel.razor页面中的@inject TagService TagService)

public async Task Task_1() 
{
//some code
if(error1_condition==true)
  {
  TagService.Message_Main=error1_text; //error1 should be shown in the header
  StateHasChanged();
  }
}

我的razor_page_2.cs(rel.razor页面中的@inject TagService TagService)

 public async Task Task_2() 
 {
 //some code
 if(error2_condition==true)
  {
  TagService.Message_Main=error2_text; //error2 should be shown in the header
  StateHasChanged();
  }
 }

我的razor_page_3.cs(rel.razor页面中的@inject TagService TagService)

public async Task Task_3() 
{
//some code    
if(error3_condition==true)
  {
  TagService.Message_Main=error3_text; //error3 should be shown in the header
  StateHasChanged();
  }
}
c# data-binding blazor-server-side razor-pages
1个回答
0
投票

根据这些异步函数的调用方式,问题可能是您不在渲染器上下文中。尝试将

StateHasChanged();
替换为
await InvokeAsync(StateHasChanged);
这将确保 StateHasChanged 在正确的上下文中执行。

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