为什么有些条件标签不能在Razor中呈现?

时间:2014-02-19 13:21:54

标签: asp.net-mvc asp.net-mvc-4 razor

@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引擎深层内部结构的文章将是一个可以接受的答案。

0 个答案:

没有答案