Как использовать строительные леса MVC5 для сложных типов в модели представления

Я использую ASP.NET MVC5 для создания приложения. Мой класс модели представления сложен, так как он имеет некоторые атрибуты, которые представляют собой списки объектов. Я попытался создать представление «создать» для следующей модели, используя леса MVC, но он просто проигнорировал атрибуты списка объектов моей модели представления... См. мою модель представления ниже... леса создали только html-элементы для имени, ImagePath и т. д. не для 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; }
    }


person tjp69    schedule 22.01.2015    source источник


Ответы (1)


Есть ли причина, по которой вы создали класс для BandGenresVM и BandLinksVM вместо того, чтобы просто создавать свойства IEnumerable‹> на своей основной виртуальной машине? Я предполагаю, что именно поэтому строительные леса не работают - 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; }
}
person esmoore68    schedule 22.01.2015
comment
Я сделал это, чтобы при необходимости их можно было повторно использовать в других моделях представления. В любом случае я пытался просто сделать их IEnumerables на верхнем уровне, как вы предлагаете, и это не сработало... - person tjp69; 22.01.2015