在 Razor 组件 (Blazor) 中渲染 Razor 部分视图

Jar*_*cha 8 c# asp.net-mvc .net-core asp.net-core blazor

我最近发现了 Blazor,并且一直在尝试一些测试项目,以更好地评估如何将其包含在未来的项目中。来自 MVC 背景的我从一个 MVC 项目开始,并向其中添加了 Razor 组件,并将其嵌套在我的标准 MVC razor 页面中。

反过来可能吗?我可以在 Razor(Blazor) 组件内部执行相当于 @Html.RenderPartial() 的操作吗?

例如

MVC View 用于@(await Html.RenderComponentAsync<Test>(RenderMode.ServerPrerendered))渲染组件

该组件管理状态等,并使用等效的方法@Html.RenderPartial("Someview.cshtml", someModel)通过模型绑定渲染标准剃刀视图。

agu*_*ars 5

您可以使用RenderFragment通过从 URL 加载内容来从静态文件、razor 页面或 MVC 视图加载 Html 代码。

样本

@page "/"
@page "/home"
@inject HttpClient _httpClient

<h1>Welcome</h1>
@_renderFragment

@code {
        protected override async Task OnInitializedAsync()
        {
            using var response = await _httpClient.GetAsync("http://localhost:4321/WelcomFragment").ConfigureAwait(false);
            var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
            _renderFragment = builder =>
            {
                builder.OpenElement(1, "p");
                builder.AddContent(2, new MarkupString(content));
                builder.CloseElement();
            };
            base.OnInitialized();
        }
}
Run Code Online (Sandbox Code Playgroud)