2016-12-13 5 views
0

Мы пытаемся сделать заказ на поставку и доставить веб-приложение с помощью вида MVC и бритвы. Но у нас возникает проблема с использованием нескольких моделей на одной странице просмотра. Мы нашли некоторые решения для этой проблемы, но они не очень хорошо работали с нашими реализациями.Несколько моделей в режиме просмотра бритвы MVC

В принципе, я внедряю систему регистрации владельцев ресторанов в Register.cshtml. В то же время я также сделал регистрацию для обычных пользователей. Если установлен флажок для владельца ресторана, пользователь должен ввести информацию о своем ресторане и зарегистрировать его с помощью того же контроллера. Поэтому, если флажок установлен, мне также нужно получить доступ к модели Ресторана.

-Мы пытались использовать Tuple, но он не работал с функциями привязки foreach и MVC, такими как Html.DropDownList().

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

Вы можете помочь нам найти альтернативные способы использования 2 моделей в 1 представлении?

+0

google о ViewModels в mvc –

+2

У вас может быть только одна модель для вашего вида. Вы должны создать составную модель представления. Это не грубая сила. Единственная альтернатива, которую я знаю, - это использовать элемент ViewBag для одной модели и использовать модель для другого. –

+0

@Michael_B благодарю вас, если это не грубая сила, я буду использовать его :)) –

ответ

0

Говоря простыми словами, вы не можете получить доступ к данным из нескольких моделей с вашей точки зрения, так как вы определяете что-то вроде этого @model WebApplication88.Models.YourModel на вершине каждого вида. Это представление может ссылаться только на данные YourModel.

Но нет ограничений на то, какую модель/список моделей вы можете использовать в верхней части каждого вида. Поэтому добавьте новый класс YourViewModel, чтобы заполнить все необходимые данные, которые вы хотите получить в представлении, и передать их в представление с контроллера.

Прочтите эту статью за дополнительной информацией Multiple Models in Single View in MVC.

Также см. this code project article on handling multiple models in a single view.

0

Прежде всего, у вас не может быть более одной модели для просмотра, потому что она против всех точек MVC. Таким образом, у вас есть два варианта:

  1. ViewModel: Создайте модель обзора, основанную на сочетании моделей пользователей и ресторанов со всеми свойствами.

  2. добавить объект ресторана в свою модель пользователя и заполнить, когда пользователь является владельцем ресторана.

Смежные вопросы