asp.net-mvc – Razor视图引擎:复杂循环和HTML

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – Razor视图引擎:复杂循环和HTML前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有很多复杂的HTML报告在我目前的项目中,我们执行大量条件渲染TRs和TDs与rowspan和colspans。

它有时看起来像这样(这是非常简化):

<tr>
@foreach (var ourItem in ourList) {
   if (ourItem != ourList.First()) {
      <tr>                
   }
   <td></td>
   </tr>
}

然而,Razor声称:“foreach循环缺少一个结束”}“字符”。 (在Visual Studio中)

我试图包装< tr>在< text>< / text>这使得关闭}问题消失只是为了找到这个当运行:“遇到结束标签”tr“没有匹配的开始标记。你的开始/结束标签是否正确平衡。

我如何做这种条件渲染,同时说服Razor不要打​​扰HTML,因为当所有的循环完成时,HTML是平衡的。或者至少是使用ASP.NET视图引擎时的情况。

解决方法

Visual Studio Intellisense和语法高亮不是最好的,但在这种情况下它警告你,如果条件不满足,你可能会得到无效的标记,你不应该责怪它。

重要的是,你的项目运行良好,但你可能会考虑将这个逻辑外部化为HTML助手,因为如果你说的是真的,这是一个简化的版本,你在视图中,我甚至不想想象你的实际代码看起来。

IMHO在一个视图中有这么多的条件逻辑是滥用。你绝对应该考虑使用HTML助手或控件,如MVCContrib Grid

更新:

您可以尝试以下hack:

<tr>
@foreach (var ourItem in ourList) {
   if (ourItem != ourList.First()) {
      @:<tr>                
   }
   @:<td></td>
   @:</tr>
}

猜你在找的asp.Net相关文章