html – .NET Core Blazor App:如何在页面之间传递数据?

在.NET Core Blazor应用程序中,页面之间经常需要传递数据。以下是几种传递数据的方式:

1. 使用URL参数传递数据

可以使用URL参数将数据传递到另一个页面。在原始页面上,生成一个包含参数的URL,然后在目标页面中使用参数来获取数据。

以下是使用URL参数传递数据的示例:

在原始页面上:

<a href="/target-page?data=test">Go to target page</a>

在目标页面上:

@page "/target-page"

@code {

[Parameter]

public string Data { get; set; }

protected override void OnInitialized()

{

Console.WriteLine(Data);

}

}

2. 使用属性传递数据

可以使用属性将数据传递到另一个页面。在原始页面上,生成另一个页面的实例,并将属性设置为所需的值。然后,可以在目标页面中使用属性来获取数据。

以下是使用属性传递数据的示例:

在原始页面上:

@page "/source-page"

<button @onclick="GoToTargetPage">Go to target page</button>

@code {

private void GoToTargetPage()

{

var targetPage = new TargetPage();

targetPage.Data = "test";

NavigationManager.NavigateTo(targetPage);

}

}

在目标页面上:

@page "/target-page"

[Parameter]

public string Data { get; set; }

protected override void OnInitialized()

{

Console.WriteLine(Data);

}

3. 使用服务传递数据

可以使用依赖注入的服务来传递数据。在原始页面上,注入一个服务,并在服务中存储所需的值。然后,可以在目标页面中注入相同的服务,并从服务中获取数据。

以下是使用服务传递数据的示例:

在原始页面上:

@page "/source-page"

<button @onclick="GoToTargetPage">Go to target page</button>

@code {

[Inject]

private IDataService DataService { get; set; }

private void GoToTargetPage()

{

DataService.Data = "test";

NavigationManager.NavigateTo("/target-page");

}

}

在目标页面上:

@page "/target-page"

[Inject]

private IDataService DataService { get; set; }

protected override void OnInitialized()

{

Console.WriteLine(DataService.Data);

}

使用这三种方法之一来传递数据,可以实现不同页面之间的数据共享。