问题描述
我最近发现了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();
}
}