2012-04-13 61 views
0

我有这样一些剃刀代码:MVC Razor视图使图像无形的基于模型项目条件

foreach (var item in projectGroup) { 
       <tr> 
        ... 
        <td> 
         <label id="@("fieldapprovallabel" + @item.InvoiceLineId)">@item.FieldUserName</label> 
         @if(item.FieldApproved != null) { 
          <img src="../../Content/Images/stock_lock.gif" alt="locked" class="lockicon" /> 
         } 
        </td> 
... 
} 

所以基本上锁定图像才可见根据条件。我知道在视图中有这样的逻辑是不好的。任何人都可以提出一个更好的方式来做到这一点

回答

2

我不相信在视图中简单的布尔逻辑或空检查有什么问题。

唯一的选择是将其全部隐藏在一些可能会返回html(或空字符串)的帮助程序类中,我认为这会在这种简单情况下增加不必要的复杂性。

0

您可以使用名为IsLocked的属性创建视图模型。这抽象了用于做出“IsLocked”决定的业务逻辑,并没有说明视图应该如何表现,只是通知视图该项目处于特定状态。

后续绑定代码会类似,但不需要视图知道item.FieldApproved等于锁定条件。

当然,在您的应用程序item.FieldApproved可能已经是一个干净的分离关注,在这种情况下,我认为它是好的。