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

人气:979 发布:2022-10-16 标签: asp.net-mvc c# .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)的等价物来呈现具有模型绑定的标准razor视图。

mvc

您可以使用RenderFragment从静态文件、剃刀页或推荐答案视图中加载代码,方法是从其URL加载其内容。

样本

@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();
        }
}

296