Как мне получить доступ к данным из нескольких моделей/контроллеров в моем представлении?

Я пытаюсь создать представление, которое создаст подкатегорию.

Чтобы создать это представление, я наследую свою модель для подкатегорий в представлении, чтобы получить доступ к необходимым атрибутам и т. д.

Теперь один из атрибутов, которые я хочу установить для своего объекта подкатегории, — это ссылка на обычную категорию.

Однако я не уверен, как заполнить раскрывающийся список элементами категории, поскольку я уже использую модель подкатегорий.

Мой вопрос в том, как лучше всего получить доступ к SelectList объектам категории в моем представлении подкатегории.

Я рассматривал возможность использования частичных представлений или, возможно, переноса данных в мои ViewBag или ViewData.

Как лучше всего это сделать?


person AronChan    schedule 24.04.2012    source источник


Ответы (1)


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

Это может выглядеть примерно так:

public class CategoryListingsVieWModel
{
   public IList<ISubCategory> Subcategories{get;set;}
   public IList<ICategory> Categories{get;set;}
   [...] // Any other data your view needs
}

Затем это становится моделью для вашего представления, которое вы передаете с вашего контроллера.

person Jamie Dixon    schedule 24.04.2012
comment
Я тоже думал о таком подходе. Но ф.е. и у категории, и у подкатегории есть атрибут title. не вызовет ли это каких-то проблем? - person AronChan; 24.04.2012
comment
Это не должно вызывать никаких проблем. Если у вас есть одна категория и одна подкатегория в вашей модели представления, вы будете обращаться к ним как Model.Category.Title и Model.Subcategory.Title. Это довольно стандартные вещи. - person Jamie Dixon; 24.04.2012