【发布时间】:2021-11-20 21:13:55
【问题描述】:
我在 Blazor 中有一个组件,它接受一个参数“TItem”,它可以是任何对象:
Employees.razor
@page "/Employees"
<GenericGrid TItem="Employee" MaintainState="true"></GenericGrid>
@code
{
}
上述组件是 Telerik 网格组件的包装器。这样,我可以使用相同的网格组件来显示来自不同对象的数据,具体取决于我传递给它的对象(员工、客户等)
GenericGrid.razor(只显示相关代码)
@typeparam TItem
...grid layout...
<GridToolBar>
<GridCommandButton Icon="add">New @typeof(TItem).Name</GridCommandButton>
</GridToolBar>
...rest of grid layout...
@code {
...
[Parameter]
public TItem Entity { get; set; }
...
当按钮被点击时,我想将用户发送到另一个页面。这个页面应该包含一个表单,用于创建我传递给它的任何对象。然而,第一个障碍是首先能够将对象发送到另一个页面。路由参数只支持字符串和整数之类的东西,所以这不是一个选项。
我发现了以下 StackOverflow 问题:c# blazor how to pass a List to a page。已接受的解决方案看起来是一个可行的选择,但我不知道如何针对我的情况实施此解决方案。
【问题讨论】:
-
Blazor 是 SPA。您不需要将任何东西传递给其他任何东西,尤其是在路由参数中。从字面上看,我整个网站(现在可能有几百个组件)中唯一的导航位于 MVC 脚手架的身份系统(我讨厌)和我的主页之间。