2011-10-31 57 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