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

时间:2020-02-13 14:10:11

标签: blazor

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

    [Parameter]
    public IReadOnlyCollection<Resource> Services { get; set; }

我从 .cshtml 页面填充此参数:

    <component type="typeof(ActivityView)" render-mode="ServerPrerendered" param-Services="Model.Services" />

model属性具有相同的类型:

    public IReadOnlyCollection<Resource> Services { get; set; }

当服务实例为 ReadOnlyCollection(Resource)时,blazor页面直接在客户端遇到以下错误:

错误:组件记录列表无效。 (blazor.server.js:15)

当服务的实例是 List(Resource)时,blazor页面可以正常工作。

为澄清这一点:

    Services = someList.ToList(); // works.
    Services = someList.ToList().AsReadOnly(); // does not work

我在MSDN文档中找不到有关作为参数传递给Blazor组件的受支持对象的任何信息。但是,我注意到似乎也没有支持没有无参数构造函数的类。资源必须具有无参数构造函数;否则我会遇到相同的错误。

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

0 个答案:

没有答案