渲染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());
}
我做错了什么?
这不会渲染任何结果,因为你没有对结果做任何操作。
@{
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
。