2011-06-26 180 views
0

我可能會做錯了......所以請糾正我,如果我是。ASP.Net剃刀視圖

我已經從他們的RestAPI中提取了我的Last.FM數據並對其進行了緩存(只有當緩存大於30分鐘時才刷新),並且從那裏我將它加載到列舉的列表中。

我試圖在剃刀顯示中放棄這個邏輯,並且從未設法使它與foreach一起工作,如果(item.image ...)...在邏輯中添加了drop divs已經導致剃刀散亂地記錄了該foreach的結尾括號。

我是否讓這個過於複雜?

 <!-- lfm data --> 
      @* Iterate over the Last.FM data and display it in an attractive format *@ 
@foreach (var group in Model.Select((x, i) => new { Group = i/4, Item = x }) 
          .GroupBy(x => x.Group)) { 
    <div class="LFM-Data"> 
    foreach(var x in group) { 
     if (x.item.image != null) { 
      <img src="@x.item.image.ToString()" class="lfm-artwork" alt="@x.item.album"/> 
     } else { 
      <img src="/Content/images/lfm/NoAlbumArt.jpg" class="lfm-artwork" alt="No Album Art Available" /> 
     } 
     <p>@Html.Raw(x.item.name.ToString())</p> 
    } 
    </div> 
} 

以下Equiso的建議後,我發現了一個奇怪的作用域問題,即無論是X不是在當前範圍內,或x不包含圖像的屬性...

@model IEnumerable<CCBlog.Classes.LastFmWrapper.Track> 

和這是LFM Wrapper類的一部分---我正在對數據建模

public struct Track 
     { 
      public string artist { get; set; } 
      public string name { get; set; } 
      public string album { get; set; } 
      public string image { get; set; } 
     } 

我打電話給shenanigans!

+0

嘗試更改'x.item'爲'x.Item',我認爲這就是問題 – Equiso

+0

砸我的頭...謝謝你牽着我的手,不能相信我錯過了。 – lazyPower

回答

2

如果你想顯示的4組的項目,你可以做somethig這樣

@foreach (var group in Model.Select((x, i) => new { Group = i/4, Item = x }) 
          .GroupBy(x => x.Group)) { 
    <div class="LFM-Data"> 
    foreach(var x in group) { 
     if (x.Item.image != null) { 
      <img src="@x.Item.image.ToString()" class="lfm-artwork" alt="@x.Item.album"/> 
     } else { 
      <img src="/Content/images/lfm/NoAlbumArt.jpg" class="lfm-artwork" alt="No Album Art Available" /> 
     } 
     <p>@Html.Raw(x.Item.name.ToString())</p> 
    } 
    </div> 
} 

,或者你可以創建一個視圖模型是已經獲得分組的項目。

+0

有趣的是,你放棄了一個lambda右邊的linq查詢在剃刀...我不知道你*可以*做到這一點...唯一的事情是,它不承認X,就像它超出範圍。儘管如此,我仍會繼續黑客攻擊。感謝這個想法,它比我更容易閱讀。 – lazyPower

+0

有一個小小的錯誤,循環內的if不應該有@,我已經測試過了。 – Equiso

+0

和評論吃了我的代碼,所以我用它更新我的問題。 – lazyPower