MVC 剃刀视图根据模型项目条件使图像不可见



我有一些剃须刀代码,例如:

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>
...
}

所以基本上锁定图像仅根据条件可见。我知道在视图中有这样的逻辑是不好的。谁能提出更好的方法?

我不

认为视图中的简单布尔逻辑或空检查有任何问题。

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

您可以使用名为 IsLocked 的属性创建视图模型。这抽象了用于进行"IsLocked"确定的业务逻辑,并且不说明视图应如何行为,只是通知视图项目处于特定状态。

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

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

最新更新