Как визуализировать компонент Blazor с помощью параметра RenderFragment со страницы RazorC#

Место общения программистов C#
Anonymous
Как визуализировать компонент Blazor с помощью параметра RenderFragment со страницы Razor

Сообщение Anonymous »


У меня есть следующий компонент Blazor:

# Button.razor @ChildContent @код { [Параметр] общественный RenderFragment ChildContent {get; набор; } } Я хочу использовать его на странице Razor. Я знаю, что могу использовать: @(await Html.RenderComponentAsync(RenderMode.ServerPrerendered)) для этого. Но как передать этому компоненту параметр RenderFragment? RenderComponentAsunc имеет второй аргумент, через который я могу передать параметры для компонента, поэтому я думаю что-то вроде этого должно быть возможно:

# Page.cshtml @(ожидайте Html.RenderComponentAsync(RenderMode.ServerPrerendered, новый { ChildContent = "Текст кнопки" })) Однако это заканчивается ошибкой:

InvalidCastException: невозможно привести объект типа «System.String» к типу «Microsoft.AspNetCore.Components.RenderFragment». Поэтому я попытался передать RenderFragment напрямую. Я создал метод расширения, который создает RenderFragment из строки:

публичный статический класс StringExtensions { общедоступный статический RenderFragment ToRenderFragment (эта строка s) => b => b.AddContent(0, s); } А затем визуализируйте это следующим образом:

@(await Html.RenderComponentAsync(RenderMode.ServerPrerendered, new { ChildContent = "Текст кнопки".ToRenderFragment() })) Мне этот подход тоже не удался.

NotSupportedException: сериализация и десериализация экземпляров Microsoft.AspNetCore.Components.RenderFragment не поддерживаются.NotSupportedException: сериализация и десериализация экземпляров Microsoft.AspNetCore.Components.RenderFragment не поддерживаются.NotSupportedException: сериализация и десериализация экземпляров Microsoft.AspNetCore.Components.RenderFragment не поддерживается. Компонент также можно отобразить с помощью тега . Итак, я попробовал.

Текст кнопки Но это отображает html неправильно

Текст кнопки И я хочу

Текст кнопки Как это сделать? Здесь я использую кнопку в качестве упрощенного примера, поэтому прямое использование разметки в файле .cshtml будет неудобным дублированием кода.

Вернуться в «C#»