在ASP.NET Core之前,我可以将Razor标记作为参数传递给某个函数。但是,它似乎不再起作用了。
例如,即使是这些简单的案例也不会产生任何结果:
ByteArrayOutputStream out = new ByteArrayOutputStream();
int counter;
byte[] buffer = new byte[1024]; // Let's read up to 1KB at a time, it's faster
while((counter = is.read(buffer)) != -1)
out.write(buffer, 0, counter);
// String output = new String(out.toByteArray(), "UTF-8");
String output = out.toString("UTF-8"); // Save an extra byte[] allocation
我做错了什么?
答案 0 :(得分:2)
这不会渲染任何结果,因为你没有对结果做任何事情。
@{
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
。