2011-10-31 29 views
0

在下面的代码中,我收到了来自Reshaper的警告。我想知道是否必须改变代码中的某些内容,或者只是隐藏这种类型的所有警告。在剃刀语法中访问修改的闭包?

警告是在每个DisplayFor线

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Telephone) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Skypeuser) 
     </td> 
     <td> 
      @Html.ActionLink("Edit", "Edit", new { id=item.ApplicantID }) | 
      @Html.ActionLink("Details", "Details", new { id=item.ApplicantID }) | 
      @Html.ActionLink("Delete", "Delete", new { id=item.ApplicantID }) 
     </td> 
    </tr> 
} 
+2

参见:[外可变陷阱(http://stackoverflow.com/questions/3416758/outer-variable-trap) – dtb

回答

2

您可以放心地忽略警告。

这是说我将通过显示模板替换在视图此foreach循环:

@model IEnumerable<MyViewModel> 
<table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Telephone</th> 
      <th>Skypeuser</th> 
      <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     @Html.DisplayForModel() 
    </tbody> 
</table> 

然后定义将自动被渲染为集合(~/Views.Shared/DisplayTemplates/MyViewModel.cshtml)的各要素的对应的显示模板:

@model MyViewModel 
<tr> 
    <td> 
     @Html.DisplayFor(x => x.Name) 
    </td> 
    <td> 
     @Html.DisplayFor(x => x.Telephone) 
    </td> 
    <td> 
     @Html.DisplayFor(x => x.Skypeuser) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id = Model.ApplicantID }) | 
     @Html.ActionLink("Details", "Details", new { id = Model.ApplicantID }) | 
     @Html.ActionLink("Delete", "Delete", new { id = Model.ApplicantID }) 
    </td> 
</tr> 

没有更多的警告。

0

即警告是错误这里并固定在ReSharper的6.1