加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:55:10 所属栏目:asp.Net 来源:网络整理
导读:我有很多复杂的HTML报告在我目前的项目中,我们执行大量条件渲染TRs和TDs与rowspan和colspans。 它有时看起来像这样(这是非常简化): tr@foreach (var ourItem in ourList) { if (ourItem != ourList.First()) { tr } td/td /tr} 然而,Razor声称:“foreach
我有很多复杂的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>
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读