我用公共参数创建了一个简单的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问题吗?