【问题标题】:Render Razor Partial View in Razor Component (Blazor)在 Razor 组件 (Blazor) 中渲染 Razor 局部视图
【发布时间】:2020-06-05 06:20:26
【问题描述】:

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

反过来可能吗?我可以在 Razor(Blazor) 组件中执行与 @Html.RenderPartial() 等效的操作吗?

例如

MVC 视图使用@(await Html.RenderComponentAsync<Test>(RenderMode.ServerPrerendered)) 渲染组件

该组件管理状态等,并使用 @Html.RenderPartial("Someview.cshtml", someModel) 的等价物来渲染带有模型绑定的标准剃须刀视图。

【问题讨论】:

  • 您可以与Razor Class Library共享组件
  • 您还可以将RenderFragment 用于来自静态 html 文件或 MVC 视图的内容。是你要找的吗?
  • 片段听起来像我想要的,你能提供一个例子吗?
  • 快速而肮脏的方式可以是 iframe
  • 参见stackoverflow.com/questions/63229397/…,您需要将.cshtml 转换为.razor(对于局部视图来说不太难),然后您可以像我的示例一样加载它,或者只使用普通标签<Tag Attrib="value"> .

标签: c# asp.net-mvc asp.net-core .net-core blazor


【解决方案1】:

您可以使用RenderFragment 从静态文件、剃须刀页面或 MVC 视图中加载 Html 代码,方法是从 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();
        }
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
相关资源
最近更新 更多