Заменить сгенерированное представление Details на viewModel - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь просто заменить созданный метод Details на viewModel в контроллере. Я знаю, что это должно быть просто, но я получаю сообщение об ошибке при добавлении действия .Find (id). Я предполагаю, что это синтаксис, или действие Find не работает для viewModels, но не может найти ответ в любом случае. Любая помощь очень ценится.

Итак, пытаясь уйти от этого:

   public ViewResult Details(int id)
    {
        Artist artist = db.Artists.Find(id);
        return View(artist);
    }

К этому

public ViewResult Details(int id)
    {

        var viewModel = new ArtistsDetailsVM();
        viewModel.Artists = db.Artists.Find(id);
        return View(viewModel);
    }

Редактировать: включить viewModel:

public class ArtistsDetailsVM
{
    public IEnumerable<Artist> Artists { get; set; }
    public IEnumerable<Album> Albums { get; set; }
    public IEnumerable<Song> Songs { get; set; }
}

1 Ответ

0 голосов
/ 23 февраля 2012

ViewModels обычно используются, когда вы хотите объединить набор данных из нескольких моделей, коллекций, списков поиска и т. Д. В строго типизированный объект ViewModel, на который вы можете ссылаться в представлении.

Так что, если вы хотите использовать ViewModel, у вас есть два варианта; вы можете либо использовать автоматическое преобразование (которое здесь избыточно), либо убедиться, что ваше свойство "Artists" в вашем ArtistsDefailtsVM соответствует типу, возвращаемому db.Artists.Find ().

Можете ли вы опубликовать код для ArtistsDefailtsVM и ошибку, которую вы получаете? Кажется, что .Find (id) возвращает одного Artist, но имя свойства вашей виртуальной машины "Artists" подразумевает коллекцию. Это может быть источником вашей ошибки.

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