2016-11-24 37 views
0

我有一个强类型的视图,当我试图显示一个模型时,将id传递给我的控制器操作方法。找不到我的强类型视图的剃刀语法

我想构建一个链接到每个这些模型以及。

对于我的foreach开始之前,我有一个i=0,然后我试图增加1使用i++。问题是,i++部分不起作用 - 我的链接始终为零作为id。为什么?

有人可以帮忙吗?

@{ 
    var i = 0; 
    foreach (var item in Model) 
    { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Title) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Content) 
     </td> 
     <td> 

      @Html.ActionLink("Details", "Details", new { id = i }) 
      i++; 
     </td> 
    </tr> 
     } 
    } 
+0

移动'我++;'到收盘'' –

+0

是您的'我++'肯定正在考虑代码,而不是标记后??尝试将其封装在'@()'中,例如'@(i ++)' – Charleh

+0

对不起,我的意思是'@ {}' - @()'我相信你可能不想要的HTML输出 – Charleh

回答

2

Razor尽最大努力将代码与标记/ html/text区分开来,这在一般情况下并不容易。在这种情况下,i++被视为文本。

原因是在foreach {部件后面有标签,导致阅读模式切换到标记/ html /文本。在该模式下,只有@...,@{...}被识别为代码,其他所有内容都被视为标记/ html /文本。

如果发生这种情况,只是把@{ ... }在你的语句,像这样:

<td> 
    @Html.ActionLink("Details", "Details", new { id = i }) 
    @{ 
     i++; 
    } 
</td>