2015-02-05 208 views
1

我想在我看來,建立HTML:lambda表達式:獲得基於另一個屬性的屬性

對象內部
<div class="row contentHeaderInfo"> 
    @foreach (var groupedItems in Model.DSet.GroupBy(a => new {a.rowId})) 
    {    
     <ul> 
      @foreach (var item in groupedItems) 
      { 
       <li>@item.Label @item.labelValue</li> 
      } 
     </ul>    
    } 
</div> 

數據,其中的ROWID = 1:

groupedItems[0] = {1,"FName","ABC"} 
groupedItems[0] = {1,"LaName","DEF"} 
groupedItems[0] = {1,"Address",""} 
groupedItems[0] = {1,"City","LosAngeles"} 
groupedItems[0] = {1,"State","California"} 
groupedItems[0] = {1,"Zip","90045"} 
groupedItems[0] = {1,"Street","Cardiff"} 
groupedItems[0] = {1,"House No","1234"} 
groupedItems[0] = {1,"Apt","1"} 

對於某些label我想要在<a>標籤內放置多個labelValues

例如如果@item.Label = "Address"那麼我想

<li> Address <a href ="blah"> 1234 Cardiff LosAngeles California 90045 </a></li> 

而其餘的(APT,房子沒有,城市,州,郵編),所以不會單獨出現。用lambda表達式實現這個可能嗎?

回答

1

爲什麼不使用@if?

@foreach (var item in groupedItems) 
{ 
    @if (item.Label == "zip") 
    { 
     <li>@item.Label @item.labelValue</li> 
    } 
} 
+0

我不認爲lambdas或linq會是一個很好的解決方案,因爲這些元素可能不會按您期望的順序進來。在嘗試將它們插入到HTML中之前,它可能更好地處理代碼中的對象。 – chustar 2015-02-06 00:40:01

+0

謝謝你。確信在代碼背後做到這一點非常合理。 – BumbleBee 2015-02-06 00:46:43

+0

你可以使用'groupedItems.Singe(item => item.Label ==「House No」)來創建字符串。labelValue + ...'。但是在後面的代碼中處理對象會更好。 – raznagul 2015-02-06 01:15:38

相關問題