MVC 3 2 модели в представлении - PullRequest
2 голосов
/ 17 ноября 2011

Я новичок в MVC (то есть в последние несколько дней), и я хотел бы знать, является ли то, что я сделал, лучшим способом.

У меня есть представление, которое представляет собой комбинацию формы элемента вставкис формой списка деталей внизу для конкретной сущности.Таким образом, мне нужно 2 модели для страницы, чтобы избежать таких вещей, как @Html.LabelFor(model => model.FirstOrDefault().EventTypeID, "Event Type").

. Что я сделал, так это установил модель на Tuple<IEnumerable<Event>,Event>, чтобы у меня был и один элемент, иКоллекция предметов.Кто-нибудь может предложить менее хакерскую альтернативу или это лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 17 ноября 2011

Существует 2 решения.

  • Вы должны создать другой класс модели представления (простой класс с обеими моделями в качестве свойств)
  • Вы можете назначить его ViewBag.Model1.... ViewBag.Model2 ... Но это динамично, поэтому у вас не будет intellisense, и вы можете получить ошибки во время выполнения.

Вы должны использовать ViewModel, подобный этому

public class ViewModel
{
    public TypeOfYourModel MyModel1 { get; set; }
    public TypeOfYourModel MyModel2 { get; set; }
}
1 голос
/ 17 ноября 2011

Я предлагаю вам создать ViewModel, которая будет содержать оба объекта, которые вы хотите передать.

public class NewEventViewModel
{
    public Event NewEvent { get; set; }
    public Event EventDetails { get; set; }
}

Вы также можете использовать ViewBag, но он не является строго типизированным, поэтому вы не получите IntelliSense.

0 голосов
/ 17 ноября 2011

Я бы создал объект Model только для представления, с 2 свойствами, одно для отдельной сущности и одно для коллекции, а затем вы можете передать этот составной объект в качестве модели для представления

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