2009-04-02 23 views
0

私はASP MVCをかなり新しくしています。あなたのビューで条件文を処理する最も良い方法は何ですか? 1つのサイズがすべてのアプローチに適合していないと確信していますが、単純なチェックのために、If-Then-Elseステートメントでビューを荒らすのが賢明でしょうか?ビュー内の条件

たとえば、リストがあり、モデルプロパティのいずれかが設定されている場合、リストアイテムの1つにクラスを設定したいとします。

<% if (myModel.MyProperty == 1) { %> 
    <li class="myClass"> 
<% } else { %> 
    <li> 
<% } %> 

これは、これにアプローチする最善の方法ですか、より良い方法がありますか?私はちょうどあなたがあなたの意見でこれほど多くの条件付きを持っているならば、それはかなり乱雑に見えることになるだろうと心配しています。

アドバイスを事前にいただきありがとうございます。

答えて

0

私はこれをあなたのコントローラに入れます。あなたが本当にきれいビューをしたい場合、あなたはヘルパーを作成することができ

<li class=""> 
+0

私はこれをコントローラーに入れないでください。 cssクラスのような設定は、表示ロジックであり、コントローラには属しません。私が言うように、それを守ってください。 – Ash

0
<ul> 
    <% foreach (var item in Model.Items) { <% 
    <li<%= item.HasProperty ? " class="\class\"" : "" %>> 
     <%= Html.Encode(item.Name) %> 
    </li> 
    <% } %> 
</ul> 
+0

それはうまくいきます。ここで、上記の方法を使用すると10項目(またはそれ以上)のリストがあるとしましょう。すべての単一リスト項目にその条件があります。リストアイテム1の場合、model.property == 1の場合、クラスを設定し、アイテム2のプロパティが2の場合など。ちょっと混乱しないでしょうか? –

+0

リピティティブな項目を使用すると、おそらく1つのli要素を持つループを使用します –

1

を持つ気にしないと仮定すると:

public static class MyHelpers { 
    // Need a more descriptive name (based on what you're generating) 
    public static string MyListItemHelper(this HtmlHelper helper, bool condition) { 
     if(condition) { 
      return "<li class=\"myClass\">"; 
     } else { 
      return "<li>"; 
     } 
    } 
} 

次に、あなたのビューがちょうどある:

<%= Html.MyListItemHelper(myModel.MyProperty == 1) %> 
    ... 
</li> 
関連する問題