Как передать коллекцию только для чтения компоненту Blazor? - PullRequest
2 голосов
/ 13 февраля 2020

Я создал простой компонент 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...