2015-02-05 172 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

相关问题