渲染ASP.. NET Core Razor参数中的标记

本文关键字:参数 Razor ASP NET Core 渲染 | 更新日期: 2023-09-27 18:18:11

. NET Core,我可以将Razor标记作为参数传递给某些函数。然而,它似乎不再工作了。

例如,即使这些简单的情况也不呈现任何内容:

@{
  Func<object, HelperResult> markup1 = @<text>hello world</text>;
  new HtmlString(markup1.Invoke(null).ToString());
  Func<object, HelperResult> markup2 = @<h1>hello world</h1>;
  new HtmlString(markup2.Invoke(null).ToString());
}

我做错了什么?

渲染ASP.. NET Core Razor参数中的标记

这不会渲染任何结果,因为你没有对结果做任何操作。

@{
  Func<object, HelperResult> markup = @<text>hello world</text>;
  new HtmlString(markup.Invoke(null).ToString());
}

在表达式new HtmlString(markup.Invoke(null).ToString());返回一个HTML结果,这是正确的,但是你调用它的方式将无法正常工作。下面是打印结果的代码片段:

@{
    Func<object, HelperResult> markup = @<text>hello world</text>;
    var html = markup.Invoke(null);
    await html.WriteAction(ViewContext.Writer);
}

你会注意到这里我们显式地告诉html变量(HtmlResult)写到哪里。在本例中,您将希望写入ViewContext.Writer,这是System.IO.TextWriter