如何将只读集合传递给blazor组件?

如何将只读集合传递给blazor组件?,blazor,Blazor,我创建了一个简单的Blazor组件(.NET Core 3.1,Blazor服务器应用程序),带有一个公共参数: [Parameter] public IReadOnlyCollection<Resource> Services { get; set; } 我在MSDN文档中找不到任何关于作为参数传递给Blazor组件的受支持对象的信息。然而,我注意到没有无参数构造函数的类似乎也不受支持。资源必须具有无参数构造函数;否则我会遇到同样的错误 有人知道这里的原因吗?该对

我创建了一个简单的Blazor组件(.NET Core 3.1,Blazor服务器应用程序),带有一个公共参数:

    [Parameter]
    public IReadOnlyCollection<Resource> Services { get; set; }
我在MSDN文档中找不到任何关于作为参数传递给Blazor组件的受支持对象的信息。然而,我注意到没有无参数构造函数的类似乎也不受支持。资源必须具有无参数构造函数;否则我会遇到同样的错误


有人知道这里的原因吗?该对象不用于数据绑定。它仅用于用值填充下拉列表。这是3.1中已知的Blazor问题吗?

您确定:
param Services=“Model.Services”
?它应该是
Services=“@Model.Services”
我猜添加@不会改变任何事情。仍然适用于列表对象。仍然无法处理ReadOnlyCollection对象。为什么要使用
该组件包含在普通的razor页面(.cshtml)中。@克里斯:我没有解决这个问题,但我理解它为什么不起作用。将模型传递给组件时,对象不会直接提供给组件,而是由组件重新创建。考虑一下旧的实体框架,它要求集合使用IList向集合中添加项。很可能,这里我们也有同样的。然而,我还是改变了我的架构。组件中的参数不应是复杂对象。它应该是一个允许组件自己查询数据的参数。所以只需将数据访问注入组件。
    <component type="typeof(ActivityView)" render-mode="ServerPrerendered" param-Services="Model.Services" />
    public IReadOnlyCollection<Resource> Services { get; set; }
    Services = someList.ToList(); // works.
    Services = someList.ToList().AsReadOnly(); // does not work