访问列表中的前几项:MVC,Razor

时间:2017-05-24 04:33:55

标签: c# asp.net-mvc asp.net-mvc-4 razor

我正在尝试访问列表中的前三个图像。

现在我正在尝试使用它来访问列表中的第一个图像:

 @if ( Model.ImageDto.ImageList != null && Model.ImageDto.ImageList.Count > 0)
        {
            <img src="@Url.Content(Model.ImageDto.ImageList[0].imgExample)" class="img-responsive">
        }
        else
        {
            <img class="img-responsive" src="~/1.jpg" />
        }

这样做三次但是收到错误。

我尝试过ImageList.First(),但效果不佳。

在列表中访问这三个图像的最佳方法是什么?

这是我收到的错误:

CS1061: 'ImageDto' does not contain a definition for 'ImageItems' and no extension method 'ImageItems' accepting a first argument of type 'Dto.ImageDto' could be found (are you missing a using directive or an assembly reference?)

谢谢

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,但我通常会在ViewModel / Controller中执行此操作,以便您拥有适当的集合。

VM

public IEnumerable<string> Images {get; set;} = new List<string>();

控制器或其他服务层,假设该属性被称为imgExample,如前所述,获取前三个并将它们存储在模型的Images集合中。

vm.Images = ImagesDto.Take(3).Select(i => i.imgExample)

然后你可以在视图上循环浏览它们

@if(Model.Images.Count > 0)
{
    @foreach(var img in Model.Images)
    {
        <img src="@img" class="img-responsive" />
    }
}
else
{
    <p>No Images</p>
}

当然,您不需要在后端执行此操作,但我尝试不在我的MVC项目的UI中添加太多逻辑