如何在 @code 块内编写 Blazor HTML 代码?

2024-02-24

如何在 Blazor 内部的函数中编写 Blazor HTML 代码@code block?

考虑以下代码:

@page "/Test"

@if (option == 1)
{
    drawSomething("Something");
}
else
{
    drawSomething("Something else");
}

@code {
    int option;

    void drawSomething(string message)
    {
        <p>message</p>
    }
}

在我尝试构建之前它不会产生任何错误,然后它给出以下错误:

错误CS0103名称'__builder'在当前中不存在 语境

在 (Test.razor.g.cs):

__builder.AddContent(0, "        ");
__builder.AddMarkupContent(1, "<p>message</p>\r\n");

如果这意味着 Blazor HTML 代码只能编写在文件的第一部分而不是函数或类中,那么这似乎非常有限。

我正在使用撰写本文时的最新版本(3.0.100-preview9-014004) 的 Blazor。

注意:给定示例中的输出高度简化,我想知道我是否以及如何能够从函数内编写代码而不以更好的方式解决上面的输出。


更新,您现在可以使用:

@GreetPerson("John")

@code {
  RenderFragment GreetPerson(string name)
  {
    return @<p>Hello <em>@name</em></p>;
  }
}

旧答案:

这是宣布为 Preview6 的一项功能 https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core-3-0-preview-6/但当时并没有像宣传的那样发挥作用,后来一些细节似乎也发生了变化。该页面底部有一条来自 Cosmin Sontu 的评论,指出了正确的方法:

@using Microsoft.AspNetCore.Components.Rendering

@*tested with preview 9*@
@{ GreetPerson(__builder, "John"); }

@code {

    void GreetPerson(RenderTreeBuilder __builder, string name)
    {            
        <p>Hello, <em>@name!</em></p>
    }
}

名字__builder无法更改。那是一个双下划线。

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

如何在 @code 块内编写 Blazor HTML 代码? 的相关文章

随机推荐

  • 从 Azure Pipeline .yaml 干净退出?

    有没有比让脚本抛出错误更好 更干净 更惯用的方法来退出基于 yaml 的 Azure Pipeline 例如 这可行 但感觉很笨拙 task PowerShell 2 displayName Exit inputs targetType i
  • elasticsearch计算唯一值的平均值

    如何动态计算elasticsearch中唯一值的平均值 price 10000 color red price 20000 color red price 30000 color green price 15000 color blue p
  • 如何在 Ruby 中对数组进行分组和求和?

    我有一个像这样的数组 ar 5 2014 01 27 20 2014 01 28 5 2014 01 28 10 2014 01 28 15 2014 01 29 5 2014 01 29 5 2014 01 30 10 2014 01 3
  • JavaScript 中的堆和本机内存分配:如何管理?

    JavaScript 有堆 垃圾收集 内存和本机 类型数组 DOM 元素 内存 问题 两者之间是否存在平衡 以便如果我想要大量类型化数组 它可以工作 但只是减少堆 可以这么说 通常的模型是分配内存 使得本机从顶部开始 堆在底部开始 当需要更
  • AVPlayer连接丢失重启

    我正在使用 AVPlayer 对象在我的 iOS 应用程序中播放远程广播流 该流工作正常并在后台播放 进行一些连接测试时我遇到了一些问题 一旦播放器连接丢失 播放器就会停止 如您所料 但是当连接恢复时我无法使播放器再次开始 我粗略地设置了一
  • 如何在带有输入的地图元素方法上使用 std::for_each ?

    I have struct Mystruct void Update float Delta typedef std map
  • 断言错误:传入的类型不是 ComponentType,它没有 'ɵcmp' 属性

    每当应用程序运行时 我都会收到此错误 尽管在当前的开发中不会给我带来问题 我认为 我想了解此错误并知道它来自哪里 因为我完全迷失了 我什至无法发布相关内容代码 但我会尝试 这些是主要路线 appModule const routes Rou
  • Gradle 与 QueryDSL 4.1.4 和 Intellij

    我正在尝试在 Spring Boot 1 5 2 项目中识别 queryDSL 1 4 1 的 Q 类 IDE 是 Intellij Ultimate 构建 gradle buildscript ext springBootVersion
  • Silverlight 与 C++.Net

    您可以使用 C Net 编写 Silverlight 应用程序吗 不使用C 或VB Net作为后端语言 而是使用C Net 您可以使用任何语言 只要它编译为纯托管代码即可 例如 有使用 IronPython IronRuby 的 Silve
  • C++ 异常 - 抛出字符串

    我的代码有一个小问题 由于某种原因 当我尝试使用下面的代码抛出字符串时 我在 Visual Studio 中收到错误 include
  • AlertDialog setmessage 在 Asynctask 内不起作用

    下面是我尝试通过 onProgressUpdate 方法在 Asynctask 中显示进度的代码 但它不会显示在警报对话框中 仅显示初始消息 class DownloadFileFromURL extends AsyncTask
  • TaskFactory.StartNew -> System.OutOfMemoryException

    大约有 1000 个任务正在运行 但有时我会收到任务计划程序抛出的以下内存不足异常 可能是什么原因以及如何避免它 System Threading Tasks TaskSchedulerException An exception was
  • 反应渲染逻辑 && 与三元运算符

    在反应中render 当 x 的值等于 1 时 逻辑 和三元运算符都会显示Hello并且两者在语法上都是正确的 当我不想显示我的条件的其他部分时 我总是使用 但我遇到过一个代码库 其中大多数地方都使用三元运算符null代替 使用一种方法相对
  • 使用 Spark 2.0.1 将数据写入 Redshift

    我正在做一个 POC 我想将一些简单的数据集写入 Redshift 我有以下 sbt 文件 name Spark POC version 1 0 scalaVersion 2 10 6 libraryDependencies org apa
  • 使用 iText pdfHTML 的 PDF 页面大小和格式

    我正在尝试使用 iText7 1 0 和 pdfHTML2 0 0 将 3 个 HTML 页面 均具有相同内容 导出为 PDF这个例子 https developers itextpdf com content itext 7 conver
  • 从 Python 中的“enchant suggest()”获取最相关的单词(拼写检查)

    我想从中获取最相关的单词enchant suggest 有没有更好的方法来做到这一点 我觉得我的函数在检查 100k 或更多范围内的大量单词时效率不高 有问题enchant suggest gt gt gt import enchant g
  • 如何在 Outlook 中添加默认签名

    我正在 Access 中编写一个 VBA 脚本 用于创建并自动填充几十封电子邮件 到目前为止 编码很顺利 但我是 Outlook 新手 创建 mailitem 对象后 如何将默认签名添加到电子邮件中 这将是创建新电子邮件时自动添加的默认签名
  • 如何处理 data.table 中的列表列

    在合并数据的过程中 我经常会得到列表列 例如 左表中的一行在右表中有多个匹配项 让我们定义一下 DT data table x list c 1 2 c 3 4 5 y list c T T c T F T z c 1 2 N c 1L 2
  • 让 javaFX 11 应用程序在 docker 上运行

    我正在尝试让一个在我的机器上完美运行的应用程序在 docker 上运行 这是我的 docker 文件 FROM openjdk 11 jre slim VOLUME tmp ADD someJar jar someJar jar ADD l
  • 如何在 @code 块内编写 Blazor HTML 代码?

    如何在 Blazor 内部的函数中编写 Blazor HTML 代码 code block 考虑以下代码 page Test if option 1 drawSomething Something else drawSomething So