2009-10-19 7 views
7

Używam <% foreach ...%> pętli, aby wyświetlić listę elementów na mojej stronie.Jak zmienić naprzemienne wiersze w asp.net mvc

Chcę dodać inny kolor tła dla stylu naprzemiennych rzędów na mojej liście. Znalazłem sposób, aby to zrobić, ale nie jestem z niego zadowolony, ponieważ wygląda na włamywacza.

Oto co mam zrobić, aby rozwiązać go tak daleko:

<table> 
    <% int counter = 0; 
     foreach (var item in Model) 
     { 
      counter++; 

      if (counter % 2 == 0) 
      { 
    %> 
      <tr class="colorfull"> 
      <% } 
      else 
      { %> 
      <tr> 
      <% } %> 
... 

Czy istnieje najlepszych praktyk, które mi brakuje, że ludzie korzystają z tego scenariusza w ASP.NET MVC?

Odpowiedz

12

Znalazłem ten fragment kodu JQuery, który uważam za znacznie czyściejszy.

$(document).ready(function() { $("table tr:nth-child(odd)").addClass("colorfull"); }); 

Wyjąłem logikę licznika. Ten skrypt JQuery manipuluje DOMem, aby ustawić klasę css dla każdego innego wiersza w pętli foreach.

+0

Polecam to nie zupa tag dla Ciebie! – jfar

+0

http://roshanbh.com.np/2008/03/different-color-alternate-row-jquery.html –

+0

Widziałem tę linię powtarzaną w wielu podobnych kwestiach, ale jest ona zawsze poza kontekstem. Gdzie to umieścisz? (Jestem bardzo nowy w mvc, jquery i ogólnie w rozwoju sieci!). – Lewray

1

Jeśli chcesz go wyczyścić, polecam napisanie niestandardowego rozszerzenia HtmlHelper. Nie używałbym jquery, jak stu42 sugeruje po prostu dlatego, że lubię patrzeć na javascript wyłącznie dla zachowania. Idealnie i miejmy nadzieję, że w niedalekiej przyszłości użyjecie w tym celu czystego css. Do tego czasu zostawiam to w znaczniku, tak jak obecnie, ale z rozszerzeniem, które obsługuje logikę, wyciągając ją z aspx.

+0

Czy możesz podać przykład tego, jak to może wyglądać? – YeahStu

5

jeśli jesteś odważna typy kto chce nurkować w CSS3

tr:nth-child(odd)  { background-color:#eee; } 
tr:nth-child(even)  { background-color:#fff; } 
+0

Działa w fire fox, chrome, ale nie w IE :( – Sly

+0

nawet w IE 8? Nie testowałem na IE 8, ale wyobrażałem sobie, że będzie ... service pack !! – Perpetualcoder

+0

Nie działa w IE 8 na Win7 x64 – Sly

1

Jeśli nie chcesz korzystać z klasy css można ustawić bezpośrednio z jQuery.

Załóżmy tag tabela: <table id="tb">..., po prostu trzeba ustawić html następująco:

<head> 
<script language="javascript" type="text/javascript" src="jquery-min.js"/> 
</head> 

<body> 
    <script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
     $("#tb tr:odd").css("background-color", "#F4F4F8"); 
    }); 
    </script> 

    <table id="tb"> 
     <tr><th>Id</th><th>Name</th></tr> 
     <tr><td>1</td><td>Junior</td></tr> 
     <!--more rows here... --> 
    </table> 
</body>