如何在视图模型中使用MVC5脚手架来处理复杂类型

时间:2015-01-22 16:11:45

标签: asp.net-mvc asp.net-mvc-scaffolding

我使用ASP.NET MVC5来创建应用程序。我的视图模型类很复杂,因为它有一些属性是对象列表。我试图创建一个'创建'使用MVC脚手架查看以下模型,但它只是忽略了我的视图模型的对象列表属性...请参阅下面的我的视图模型...脚手架只为Name,ImagePath等创建了html元素..不适用于BandGenres。

有没有办法使用MVC5脚手架为视图模型中的对象列表创建视图元素?



public class BandRegisterVM
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string ImagePath { get; set; }
        public string Description { get; set; }
        public BandGenresVM Genres { get; set; }  //is a list see below
        public BandLinksVM Links { get; set; }

    }

    public class BandGenresVM
    {
        public IEnumerable<BandGenreVM> BandGenres { get; set; }
    }

    public class BandLinksVM
    {
        public IEnumerable<BandLinkVM> BandLinks { get; set; }
    }


    public class BandGenreVM
    {
        [Key]
        public int Id { get; set; }
        public int BandId { get; set; }
        public string Name { get; set; }
        public int GenreId { get; set; }
        public string Genre { get; set; }
    }

    public class BandLinkVM
    {
        [Key]
        public int Id { get; set; }
        public int BandId { get; set; }
        public string Name { get; set; }
        [Url]
        public string URL { get; set; }
    }
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

是否有理由为BandGenresVM和BandLinksVM创建一个类,而不是仅创建IEnumerable&lt;&gt;主VM上的属性?我猜这就是为什么脚手架不起作用的原因 - MVC认为这些属性不是子列表,而是复杂的对象。

public class BandRegisterVM
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string ImagePath { get; set; }
    public string Description { get; set; }
    public IEnumerable<BandGenreVM> BandGenres { get; set; }
    public IEnumerable<BandLinkVM> BandLinks { get; set; }
}