Blazor RenderFragment 到字符串

2024-04-16

我正在开发一个代码块组件.Net 6 Blazor wasm。我需要显示RenderFragment as string并在我的 html 中渲染该组件。

这是我的代码块组件,

<pre class="language-html">
    <code class="language-html">
        @("Some way to get non rendered html from @ChildContent")
    </code>
</pre>

@ChildContent

@code
{
    [Parameter]
    public RenderFragment ChildContent { get; set; }
}

我使用上述组件,

<CodeBlock>
    <Chat></Chat>
</CodeBlock>

预期输出:

<Chat></Chat> 
<!-- This is the input I passed inside as RenderFragment and I need the exact Render Fragement Code; 
not the Rendered Html code of the RenderFragment -->

组件按预期渲染。但无法获取我的非渲染 htmlRenderFragment

一种选择是通过RenderFragment内容作为字符串参数CodeBlock成分。但这会导致重复且不可读HTML。当ChildContent有多行代码。

<CodeBlock Html="@("<Chat></Chat>")">
    <Chat></Chat>
</CodeBlock>

关于如何实现这一目标有任何提示/建议吗?


这是一个很难回答的问题。据我了解,您希望能够呈现ChildContent您的组件的同时还能够查看ChildContent数据为纯文本 Razor 代码,或者 HTML(如果您的文件中有这样的内容)ChildContent, right?

所以一个选择是围绕你的@ChildContent渲染器标签带有<div>并在父组件初始化时为该 div 分配一个唯一的 id。然后创建另一个变量,我们称之为private string RawContent { get; set; }。然后编写一个 javascript 函数,该函数接受 id 值并通过 id 从 DOM 获取元素并返回该元素的innerHTML.

我创建了一个测试项目来尝试它并且它有效。以下是相关的片段。

In your Component.razor file:

@inject IJSRuntime JS
<pre class="language-html">
    <code class="language-html">
        @RawContent
    </code>
</pre>

<div id="@ElementId">
    @ChildContent
</div>
@code
{
    [Parameter]
    public RenderFragment ChildContent { get; set; }
    private ElementReference DivItem { get; set; }
    private string RawContent { get; set; }
    private Guid ElementId { get; set; } = Guid.NewGuid();

    protected async override Task OnInitializedAsync()
    {
        base.OnInitializedAsync();

        RawContent = await JS.InvokeAsync<string>("GetElementHtmlText", ElementId.ToString());
    }
}

然后在你的index.html文件将其添加到 a 的一侧<script>标签,或您的 JavaScript 文件之一:

async function GetElementHtmlText(elementID) {
            await setTimeout(() => {  }, 1);
            console.log(elementID);
            var element = document.getElementById(elementID);
            console.log(element);
            var result = element.innerHTML;
            console.log(result);
            return result;
        }

然后,在您希望使用此组件的任何地方,您都将呈现 HTML 标记并提供原始文本。但是,此函数将返回所有 html 标记原始文本,这意味着您可以获得 razor 标签和 Blazor 插入的空注释元素(即<!--!-->)。但只要您知道您可以解决它们。

我没有这样做,但你可以修改它以调用 JSInterop 函数RawContent的 getter 而不仅仅是在组件初始化时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Blazor RenderFragment 到字符串 的相关文章

  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud

随机推荐

  • 在jqGrid的Edit Url中传递参数进行表单编辑

    我在用jgGrid表单编辑 我在其中更新编辑的值 当我点击提交时editurl被叫 在这种情况下 在我的场景中 我必须将两个参数传递给控制器 jqGrid代码 var colname var colHeader var gridData v
  • 有没有一种简单的方法可以从本地 gradle 缓存中删除一个依赖项?

    本地 gradle 缓存存储 maven gradle 依赖项的副本 如何清除gradle缓存 https stackoverflow com q 23025433 4107809涵盖如何清除整个缓存 但不清除单个包 有没有一种简单的方法可
  • 尝试在 Firefox 中安装我的附加组件的 .xpi 文件时,附加组件“似乎已损坏”

    我正在尝试在 Firefox 45 中安装扩展 Firefox 49 也会发生同样的情况 但 Firefox 不允许我这样做 这表明 This add on could not be installed because it appears
  • 为什么 bootstrap.properties 被 spring-cloud-starter-config 忽略?

    我的目标是获取配置world service from a config service 架构 config service有依赖性spring cloud config server at localhost 8888 world ser
  • 强制 R 函数调用自给自足

    我正在寻找一种方法来调用不受其他对象影响的函数 GlobalEnv 看一下下面两个函数 y 3 f1 function x x y f2 function x library dplyr x gt mutate area Sepal Len
  • 引导程序更改 $grid-gutter-width

    我正在使用 Bootstraps 网格系统 我需要一个2px每列之间的空间 我尝试过 Column Gap 但没有任何效果 有人可以帮忙吗 代码 HTML div class container div class row div clas
  • 泛型方法调用重载方法的问题

    我遇到了有趣的事情 在 Java 和 C 中工作相同 Java代码 public class TestStuff public static void main String args Printer p new PrinterImpl p
  • 创建可折叠代码块 Eclipse

    为了使我的代码在 Eclipse 上干净整洁 我想知道用 Any 标签包围的代码是否可以作为函数收回 我使用 eclipse Juno 进行 Android 开发 是的 您可以使用该插件 咖啡字节代码折叠 http market eclip
  • 我的 Redis 自动生成的密钥

    我不知道我的 Redis 版本 4 0 9 到底发生了什么 我正在运行一个应用程序并使用 Redis 来存储我的数据库 但是 然后 Redis 自动创建 3 个新键 Backup1 Backup2 Backup3 并删除我的所有数据 这是我
  • 来自 php 的 jQuery Ajax 响应变量

    我有一个简单的问题 但无法找到我需要的确切解决方案 如何使用 jQuery ajax 调用仅回显两个 PHP 变量的 PHP 文件 并将它们保存到响应中的 javascript 变量中 你会做类似的事情 getJSON ajax respo
  • Amazon S3 上传错误 PermanentRedirectException

    我已经使用 Composer 安装了适用于 PHP 的 Amazon SDK 我复制了示例代码并在我的系统中实现 但是当我尝试上传文件时 我得到以下信息 为了安全起见 我已将路径设为通用 致命错误 未捕获异常 Aws S3 Exceptio
  • 重用黄瓜数据表

    如何跨多个场景或功能文件重用 Cucumber 测试数据 我想绕过表数据代码重复 我当前的功能文件 Scenario At begining unable to click on first When On Sidebar page I c
  • 网格单位向量中的元素替换

    我已经对此感到困惑好几次了 所以这里为其他可能偶然发现同样问题的人提出了一个虚构的问题 考虑这个网格单位向量 a unit 1 3 c cm in npc 我想用新值替换一些元素 自然的方法是 a 1 unit 2 pt a 1 2cm 2
  • 如何使用 javax.mail.internet.MimeBodyPart.setFileName 保留所有字符?

    我需要使用创建邮件javax mail版本 1 6 2 希望尽可能坚持高级方法 并希望避免自己处理字符编码 折叠以及最终获得有效邮件所需的任何内容 我目前正在处理的一个问题是文件名 因为默认情况下javax mail internet Mi
  • 如何在 Tridion 中获取当前登录用户的用户 ID?

    我在 Tridion 中实现了一个功能区工具栏按钮 作为其中的一部分 我需要循环访问一些组件 这需要有效的会话 要在 Tridion 中创建会话 我需要一个用户 ID 如何获取当前用户的User Id windows User Id 下面的
  • PHP 在函数中包含/需要

    是否可以在 PHP 函数内的包含文件中包含 return 语句 我希望这样做 因为我在单独的文件中有很多函数 并且它们在顶部都有大量共享代码 As in function sync include once file php echo Te
  • 快照图像不能用作舞台图标

    我正在尝试将舞台快照中的图像设置为舞台图标 下面的代码演示了它 import javafx application Application import javafx scene Scene import javafx scene imag
  • 视口、窗口、文档

    在下面的代码中 document documentElement clientWidth 1349 document documentElement clientHeight 363 window innerWidth 1366 windo
  • Gradle 多项目定义对根项目的依赖

    我有一个多项目 gradle 构建 以这种方式配置 root projectA projectB 我想在root build gradle所有嵌套项目的依赖项 这是文件 subprojects version 1 0 SNAPSHOT re
  • Blazor RenderFragment 到字符串

    我正在开发一个代码块组件 Net 6 Blazor wasm 我需要显示RenderFragment as string并在我的 html 中渲染该组件 这是我的代码块组件 pre class language html code clas