@helper MyBody
{
<div>Hello world!</div>
}
以下作品完美无缺
@helper MyHelper(Func<HelperResult> myFunc)
{
<div class="modal-body">
@(config._html.Raw(myFunc != null ? myFunc().ToHtmlString() : ""));
</div>
}
@MyHelper(MyBody)
并呈现:
<div class="modal-body">
<div>Hello World!</div>
</div>
以下有时可以正常使用
@helper MyHelper(Func<HelperResult> myFunc)
{
<div class="modal-body">
@if(myFunc != null)
{
myFunc();
}
</div>
}
@MyHelper(MyBody)
但偶尔,取决于一些尚未知的影响,渲染:
<div class="modal-body">
</div>
一段代码始终呈现相同的内容,刷新页面时不会切换行为。周围代码的(大量)似乎包含未知的影响。
任何人都可以解释原因吗?什么可以使Razor出错,它不会呈现“Hello World!” DOM元素?我习惯了老式的PHP,它有一个简单的原则:它呈现文本,而不关心DOM。剃刀不能以同样的方式工作吗?
一篇描述Razor引擎深层内部结构的文章将是一个可以接受的答案。