【问题标题】:Emitting html using the razor engine's @helper thing with a delegate使用 razor 引擎的 @helper 和委托发送 html
【发布时间】:2011-08-17 15:48:54
【问题描述】:

我可能在这里遗漏了一些非常基本的语法问题。然而,可能 Razor 还不够聪明,无法在这样的委托中完成 'understand' html 输出(由于缺乏与后者有关的任何人的官方文档,我必须发布这里):

  @{

     ParallelQuery pQuery = rootData.ChildNodes.AsParallel();


     Func<ParallelQuery, string> builderAction = delegate
     {

         while (rootData.HasChildNodes)
         {
             foreach (SiteMapNode node in pQuery)
             {
                  <li><a href="@node.Url">@node.Title</a></li> //CANT SEE ANY HTML TAGS AVAIL TO SPEW                
             }
         }
         return string.Empty;
     };

   };

还只是在代表机构之外:

      //CHARM - BUT I WANT TO USE DELEGATES, WHY NOT??
      @{ 
        foreach(var x in new string[100]) {
        <li>
               <a href="@x">@x</a>
        </li>
      };

这张图有什么问题??

编辑 1:

我在这里做了什么奇怪的事情,只是为了建立一个带有链接的树列表吗?它似乎比 Razor 在轻松的眼泪中所应该的要复杂一些。

【问题讨论】:

  • 你试过用&lt;text&gt;&lt;/text&gt;标签包装HTML吗?
  • @Tejs:为什么?他没有发出任何文本内容。
  • Tejs:当我的其他原型使用 并且可以工作时,您可能会遇到一些问题。但该原型也没有使用 lambda,我有点喜欢必须执行 @helper 体内包含的递归。我会测试一下。

标签: .net asp.net-mvc-3 razor html-helper


【解决方案1】:

当您运行任何并行查询时,页面的执行将继续运行。 当您的并行查询完成运行时,.net 已经将您的页面发送到客户端。

如果您在 Ajax 调用的函数内运行并行查询,它也不会工作。

不知何故,您需要等到并行查询完成,因为它是非阻塞的。因此,在运行并行查询的代码结束时,您需要以某种方式等待它完成。

【讨论】:

  • @Jeroen:确实如此,先生,那么 Razor 中的并行性只有在执行 Ajax 请求时才有意义?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 1970-01-01
相关资源
最近更新 更多