0

次のようなかみそりのコードがあります。

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

したがって、基本的にロック画像は条件に基づいてのみ表示されます。ビューにこのようなロジックを含めるのは良くないことを理解しています。誰でもこれを行うためのより良い方法を提案できますか?

4

2 に答える 2

2

ビューの単純なブール論理またはnullチェックに問題があるとは思いません。

唯一の選択肢は、html(または空の文字列)を返すヘルパークラスですべてを非表示にすることです。これにより、このような単純なケースでは不要な複雑さが追加されると思います。

于 2012-04-13T00:34:55.413 に答える
0

と呼ばれるプロパティを使用してビューモデルを作成できますIsLocked。これは、「IsLocked」の決定に使用されるビジネスロジックを抽象化し、ビューの動作を示すのではなく、アイテムが特定の状態にあることをビューに通知するだけです。

item.FieldApproved後続のバインディングコードも同様ですが、ロックされた状態に等しいことをビューが認識する必要はありません。

もちろん、アプリケーションのコンテキストでは、item.FieldApproved関心の分離がすでに明確になっている可能性があります。その場合は、そのままで問題ないと思います。

于 2012-04-13T00:38:25.567 に答える