2013-03-01 5 views
0

Это должно быть несколько простых моментов для кого-то, кого я ожидаю, но как разработчик Front End, пытающийся справиться с бритвой MVC с нулевым знанием C#, это меня озадачило.Рассмотрите bool в цикле foreach

У меня есть логическое вар hasSecond, который я бы хотел рассмотреть в следующем foreach:

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1)) 
    { 
     <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option> 
    } 

Я только хочу, чтобы отобразить параметр с @reason.Atrribute значением «ВТОРОЙ», когда hasSecond является true, в противном случае эти параметры не отображаются.

Благодарим за помощь!

ответ

3
@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1)) 
    { 
     if(hasSecond||reason.Attribute!="SECOND") 
     { 
      <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option> 
     } 
    } 

Если сделать трюк. Я думаю, что раньше у меня была логика. Это отобразит все option с, где reason.Attribute не SECOND. Если он -SECOND, он отобразит только option, если hasSecond это правда.

+0

Это прекрасно, спасибо! –

0

Вы можете сделать это следующим образом: просто поставьте оператор if в цикле foreach и добавьте другое предложение к тому месту.

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1 && e.Attribute=="SECOND")) 
{ 
    if(hasSecond) 
    { 
     <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option> 
    } 
} 

Если вы просто хотите data-confirm-attr="@reason.Attribute" удалить, если hasSecond ложно, то вы можете использовать следующие:

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1)) 
{ 
    <option data-confirm-type="1" @if(hasSecond) { <text>data-confirm-attr="@reason.Attribute"</text> } value="@reason.ID">@reason.Text</option> 
} 
+0

Я думаю, что есть более необходимая для условной, чем просто 'hasSecond' - в противном случае, почему это место * внутри *' foreach'? –

1

просто добавить его в ИНЕКЕ:

@foreach (PODO_AcceptRejectReasons reason in reasonList2.Where(e => e.Type == 1 && hasSecond)) 
    { 
     <option data-confirm-type="1" data-confirm-attr="@reason.Attribute" value="@reason.ID">@reason.Text</option> 
    }