2015-02-17 5 views
2

То, что я пытаюсь выполнить, - установить переменную строку в таблице на другой стиль CSS.Счетчик цикла цикла в MVC Razor

Мой контроллер возвращает простой список и передает его в вид через ViewBag.

Мой Посмотреть код выглядит следующим образом:

@{ 
    int _recordCount = 1; 
    foreach (var _oEstimateDetails in ViewBag.EstimateDetailData) 
    { 
     if (_recordCount == 1) 
     { 
      <tr class="EstimateDetailDataRow"> 
     } 

     if (_recordCount == 1) 
     { 
      </tr><tr class="EstimateDetailDataAlternateRow"> 
      _recordCount = 0; 
     } 
     </tbody> 
     <td class="EstimateDetailData"> 
      @_oEstimateDetails.EstimateLineDescription 
     </td> 
     <td class="EstimateQuantityData"> 
      @_oEstimateDetails.EstimateLineQuantity 
     </td> 
     <td class="EstimateRateData"> 
      @_oEstimateDetails.EstimateLineRate 
     </td> 
     <td class="EstimateLineTotalData"> 
      @(_oEstimateDetails.EstimateLineQuantity * _oEstimateDetails.EstimateLineRate) 
     </td> 
     </tr> 
     _recordCount = _recordCount + 1; 
    } 
} 

Поскольку это моя пятая попытка понять это, я собираюсь рвать на себе волосы. Любая помощь была бы наиболее признательна.

+0

Вы можете сделать это с помощью Javascript и CSS: http://stackoverflow.com/questions/3084261/alternate-table-row-color-using -css – Marco

+0

IIRC [сетка MVCContrib] (https://mvccontrib.codeplex.com/wikipage?title=Grid) сделает это для вас, между прочим. – David

+0

Вы можете сделать это с помощью чистого CSS3. (: селектор nth-child) Также ... этот стандарт именования. –

ответ

3

Предполагая, что <tbody> начинается до программирования кода, я думаю, что вы закрываете TBODY в начале здесь фрагмент кода, который имо должен работать:

<tbody> 
@{  
    for(int i =0; i < ViewBag.EstimateDetailData.Count(); i++) 
    { 
     var _oEstimateDetails = ViewBag.EstimateDetailData.ElementAt(i); 

     <tr class="@(i % 2 == 0 ? "EstimateDetailDataRow" : "EstimateDetailDataAlternateRow")"> 
     <td class="EstimateDetailData"> 
      @_oEstimateDetails.EstimateLineDescription 
     </td> 
     <td class="EstimateQuantityData"> 
      @_oEstimateDetails.EstimateLineQuantity 
     </td> 
     <td class="EstimateRateData"> 
      @_oEstimateDetails.EstimateLineRate 
     </td> 
     <td class="EstimateLineTotalData"> 
      @(_oEstimateDetails.EstimateLineQuantity * _oEstimateDetails.EstimateLineRate) 
     </td> 
     </tr> 
    } 
} 
</tbody> 
+0

NICE !!!! Спасибо –

2

Как правило, JQuery используется, чтобы сделать это (не ваш подход) ,

EG: (известный код, а не моя):

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("table > tbody tr:odd").css("background-color", "#F7F7F7"); 

    }) 
</script>