Я создал простой компонент Blazor (. NET Core 3.1, серверные приложения Blazor) с параметром publi c:
[Parameter]
public IReadOnlyCollection<Resource> Services { get; set; }
Я заполняю этот параметр из .cs html page:
<component type="typeof(ActivityView)" render-mode="ServerPrerendered" param-Services="Model.Services" />
Свойство модели имеет тот же тип:
public IReadOnlyCollection<Resource> Services { get; set; }
Когда экземпляром служб является ReadOnlyCollection (Resource) на странице блэйзера непосредственно на клиентской стороне возникает следующая ошибка:
Ошибка: список записей компонентов недействителен. (blazor.server. js: 15)
Когда экземпляром служб является List (Resource) , страница блейзора работает отлично.
Чтобы пояснить это:
Services = someList.ToList(); // works.
Services = someList.ToList().AsReadOnly(); // does not work
Я не смог найти ничего о поддерживаемых объектах, передаваемых компонентам Blazor в качестве параметра в документации MSDN. Однако я заметил, что классы без конструктора без параметров также не поддерживаются. Ресурс должен иметь конструктор без параметров; в противном случае я сталкиваюсь с той же ошибкой.
Кто-нибудь знает причину здесь? Объект не используется для привязки данных. Он используется только для заполнения раскрывающегося списка значениями. Это известная проблема Blazor в 3.1?