ASP.NET MVC来自父视图的模型数据的IEnumerable属性的部分视图数据

时间:2014-01-14 07:13:37

标签: c# asp.net-mvc-4 view collections model

如何将模型属性指定为部分视图的模型数据?

我有一个名为Album的类,并且在其中定义了一些IEnumerable属性。我正在使用Dapper MultiMapping来填充这些属性

相册模型

namespace MusicStore.Model
{
    public class Album : IAlbum
    {
        int ID{get;set;}
        string Name {get;set;}
        ...
        IEnumerable<IPhoto> Photos{ get; set; }
        IDictionary<IArtistType, IList<IArtist>> Artists { get; set; }
    }

    public class Photos : IPhoto
    {
        int ID{get;set;}
        string URL {get;set;}
        ...
    }
}

相册视图

@model MusicStore.Entity.IAlbum
...
@Partial("_PhotosPartial", @Model.Photos)
...

_PhotosPartial partial view

@model IEnumerable<MusicStore.Entity.IPhoto>
...
@if(Model!=null)
{
    @foreach(var item in Model)
    {
        <img id='img_@item.ID' src='\@item.URL' alt='@item.Title' />
    }
}
...

我想使用属性IEnumerable<IPhoto> Photos作为局部视图的模型。

  

如果IEnumerable<IPhoto> Photos至少有一个条目,则此方法有效   在其中,否则发生异常,它说我正在通过IAlbum   作为期望的_PhotosPartial部分视图的模型   IEnumerable<IPhoto>作为模型。

为什么我收到此错误?

我不喜欢使用ViewModel'因为拥有照片集的相册比使用具有相册和照片列表的单独ViewModel更有意义,例如

public class AlbumViewModel
{
    public IAlbum Album { get; set; }
    IEnumerable<IPhoto> Photos{ get; set; }
    IDictionary<IArtistType, IList<IArtist>> Artists { get; set; }
}

0 个答案:

没有答案