ASP.Net Razor View - PullRequest
       4

ASP.Net Razor View

0 голосов
/ 26 июня 2011

Возможно, я делаю это неправильно ... поэтому, пожалуйста, исправьте меня, если я.

Я извлек свои данные Last.FM из их RestAPI и кэшировал их (чтобы обновлять, только если кешболее 30 минут), и оттуда я загрузил его в перечисляемый список дорожек.

Я пытаюсь удалить эту логику на дисплее Razor, и мне так и не удалось заставить ее работать с болеечем просто foreach, и если (item.image ...) ..., добавление в логику для удаления div привело к тому, что бритва потеряла след закрывающей скобки для 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; }
        }

Я вызываю махинации!

1 Ответ

2 голосов
/ 26 июня 2011

Если вы пытаетесь отобразить элементы в группах по 4, вы можете сделать что-то вроде этого

@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>
 }

или вы можете создать ViewModel, который уже группирует элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...