如何将对象从一个页面组件传递到.net Blazor应用程序中的另一个页面组件?



我有一个。net Blazor服务器应用程序,需要将对象从一个组件传递到另一个组件。这两个组件都是页面,这意味着它们有带路由的@page指令。我知道如何使用级联值在常规Blazor组件之间传递参数,但这不适用于页面组件。我还知道如何在端点路由中传递参数。然而,我想传递一个具有多个属性的对象,而不是字符串或int,我不确定如何最好地实现这一点。

是否可以传递一个对象作为端点路由参数?如果没有,在Razor组件上下文中,有什么好方法来完成这个任务呢?

使用依赖注入可能会解决这个问题。

的例子:

  1. 创建一个名为"applicationservice"的类
  2. 在该类中创建一个名为"IApplicationService"的接口

可以是这样的

public interface IApplicationService
{
public Task MsgBox(string value);
}
  1. 在ApplicationService类中的"ApplicationService.cs"文件,继续并实现上面的接口成员

你可以这样写:

public async Task MsgBox(string value)
{
await _JSRuntime.InvokeAsync<string>("alert", value);
}
  1. 在program.cs类中,您现在需要注册该"服务"。我们刚刚创建了。

可以是这样的

builder.Services.AddTransient<IApplicationService, ApplicationService>();
builder.Services.AddScoped<ApplicationService>();
  1. 你可以注入这个类,这样页面就可以访问它了:

  2. 现在在你的razor组件中,你应该可以这样做:

    await MainAppService.MsgBox("这是一个消息框");

这在我的WASM blazor应用程序中工作,希望它能给服务器端带来一些启示🚀

使用DI服务。创建一个类来保存对象。将其作为程序中的作用域服务添加。在任何组件中使用它(页面只是带有页面属性的组件),尽管@inject.

相关内容

  • 没有找到相关文章

最新更新