C# 如何从blazor中的另一个组件启动方法?

C# 如何从blazor中的另一个组件启动方法?,c#,.net,blazor,blazor-server-side,C#,.net,Blazor,Blazor Server Side,所以我有一个票证处理系统,我在blazor服务器中编写。所以我在首页上列出了所有的票证和一些统计数据,然后我在首页上有一个按钮,打开一个模式,在那里我可以编辑和创建新的票证 所以我想做的是,在我创建了一个票证或更新了一个票证之后,我想立即运行我的方法,它位于首页,将再次加载所有数据。因此,当您退出模式时,新值将出现。目前,我必须刷新页面才能看到新的值 我怎样才能做到这一点?我不能在子组件等上使用@ref,因为此模式组件位于mainLayout文件中,而不是方法所在的特定页面文件中 我试过的:

所以我有一个票证处理系统,我在blazor服务器中编写。所以我在首页上列出了所有的票证和一些统计数据,然后我在首页上有一个按钮,打开一个模式,在那里我可以编辑和创建新的票证

所以我想做的是,在我创建了一个票证或更新了一个票证之后,我想立即运行我的方法,它位于首页,将再次加载所有数据。因此,当您退出模式时,新值将出现。目前,我必须刷新页面才能看到新的值

我怎样才能做到这一点?我不能在子组件等上使用@ref,因为此模式组件位于mainLayout文件中,而不是方法所在的特定页面文件中

我试过的:

  • 在子组件上使用@ref
  • 带有“Page Page=new Page()”和“Page.LoadData()”的classic.net,从syntex角度看,它可以工作,但它给了我一个 调用方法时为nullreferenceobject
那么,关于如何做到这一点,有什么建议吗?或者我可以用其他方法做这件事的任何提示?我不想刷新页面以查看更改


谢谢

您可以尝试将动作作为参数传递给您的模型

比如:

MainPage.razor

<Modal OnSubmit="@HandleTicket" />

Modal.razor.cs

public partial class Modal
{
[Parameter]
Action<Ticket> OnSubmit {get;set;}

private Ticket ticket;

private void Submit() // Gets called when you close the modal
{
OnSubmit?.Invoke(ticket);
}
公共部分类模式
{
[参数]
对submit{get;set;}的操作
私家票;
private void Submit()//在关闭模式时调用
{
OnSubmit?.Invoke(票据);
}

如果您的模式将更改保存到后端,那么后端应该触发更新,而不是彼此之间的UI组件。@Fildor-hmm好的,关于如何实现这一点,您有什么好的链接吗?@philipcode-请参阅此处的一篇短文-这篇文章用一些示例代码和工作示例解释了一个简单的数据通知服务。