11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
|
|
1 | |
Как отобразить сборное представление с двумя моделями?11.07.2011, 23:12. Показов 3643. Ответов 10
Метки нет (Все метки)
Вопрос написан сумбурно, объясню подробнее.
У меня есть мастер страница, у неё есть модель. Также есть страница - тело, у неё также есть своя модель. Так вот как мне передать две модели для вывода? И вообще, вывожу так - в контроллере Index пишу View(model); - model кому относится будет? Телу Index? Тогда как передать модель для мастер страницы Index?
0
|
11.07.2011, 23:12 | |
Ответы с готовыми решениями:
10
Не могу выбрать между двумя моделями Выбор между двумя моделями плат Выбор между двумя моделями GTX 1660 Ti Ребят, посоветуйте выбрать между двумя моделями |
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
11.07.2011, 23:40 | 2 |
developer_, пихаете обе модели в ViewBag, преобразуете в отображении к нужному типу - и будет вам счастье. Ну или - пишете ViewModel у которого будет 2 проперти - первая и вторая модель, передаете этот ViewModel в отображение через View(model), достаете в отображении - и профит. Второй прием описан у Сандерсона, в MVC/MVC2, первый - только для MVC3
0
|
11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
|
|
12.07.2011, 00:09 [ТС] | 3 |
Во втором способе вы предлагаете сделать третью модель содержащую в виде объектов первые две? Если да то такой способ очевиден. Более того напрашивается вообще сделать одну модель. Но мне кажется такой способ не слишком правильным - на пустом месте создаём ещё одну модель.
Способ с ViewBag интересен, но не прозрачен в кодирование, потенциальное место для ошибок. Это всё моё ИМХО. Вопрос задавал, потому что тема весьма актуальна - любой (ну или почти любой ) проект состоит из мастер страницы и кучи частей страниц, и у каждой будет соя модель. Поэтому должен быть простой способ сделать эту операцию просто, быстро. По крайней мере если такого способа нет, то он должен появится. P.S. Может я не правильно вижу технологию, делаю не так, от сюда и проблемы?
0
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
12.07.2011, 00:44 | 4 |
Это не явная модель - она не походит из предметной области и не влияет на нее, это МодельВида, ViewModel, если вы считаете такое неправильным - плюньте в лицо разработчикам Silverlight и WPF, которые используют MVVM.
Добавлено через 58 секунд И кстати ViewModel принято создавать в иерархии веб-приложения, а не библиотеки модели - чистота нарушена не будет
0
|
2 / 2 / 1
Регистрация: 29.06.2011
Сообщений: 45
|
|
12.07.2011, 19:50 | 5 |
использую ViewBag и радуюсь жизни, что если не секрет там такого для вас "потенциально для ошибок."?
0
|
CEO
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
|
|
12.07.2011, 23:00 | 6 |
возможно то что он dynamic и IntelliSence не поможет при разработке, как и тулзы рефакторинга.
0
|
2 / 2 / 1
Регистрация: 29.06.2011
Сообщений: 45
|
|
12.07.2011, 23:07 | 7 |
несовсем понял можно попроще? Я так понял пугает вывод из ViewBag в самом View?
0
|
11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
|
|||||||||||||||||||||
12.07.2011, 23:10 [ТС] | 8 | ||||||||||||||||||||
Что то я совсем запутался.
Есть _Layout.cshtml - это мастер страница она типизированна. Содержит поле ввода. Есть въюха Index.cshtml. Тоже типизированна. Есть контроллер public ActionResult Index(_LayoutModel model) Вопрос - какую модель получит контроллер? Ведь их две? В контроллере пишим View(model); Вопрос: кто получит модель? Мастер страница? Или въюха индекс? Можете привести примеры кода как вы разруливаете подобную ситуацию? Кто скажит что мастер страница не должна иметь модели, хорошу, тогда возмём две и более типизированные partial - получаем тоже самое. Вот мастер пэйдж:
Вопросы: Что будет возвращать такая въюха? Ведь модели 2. Как передать 2 модели в Index. Если можно с примерами кода, а то вообще каша в голове. Добавлено через 2 минуты Про потенциальное место ошибок я имел ввиду упаковку в нетипизированный объект нескольких типизированных, а потом обратный парсинг на другой стороне. Ведь можно ошибится и распарсить во что угодно, и ругаться не будет.
0
|
2 / 2 / 1
Регистрация: 29.06.2011
Сообщений: 45
|
||||||
12.07.2011, 23:23 | 9 | |||||
Что ты хочеш сделать я вообще ничего непойму, зачем тебе в _Loyout передавать модель, потом у формы
И вот тут @Html.TextBoxFor(m => m.input_data) ты я так понимаю хочеш передать input_data и его же должен ловить в контроллере public ActionResult Index(string input_data) Хотя я могу ошибатся пусть может кто исправит )))
0
|
11 / 11 / 0
Регистрация: 11.08.2010
Сообщений: 130
|
|
12.07.2011, 23:49 [ТС] | 10 |
Опишу логику. На странице есть поле ввода и кнопка ok. Вводим инфу в поле ввода, нажимаем кнопку - возвращается ответ который выводится ниже.
Я сделал так. Т.к. поле ввода и кнопка будут на всех страницах - то сделал этот код мастер страницей. Сам вывод сделал отдельными страницами. Должно работать примерно так. Делаем запрос в корень - это будет контроллер Index. В этом контроллере я должен получить данные из поля ввода которое находится на мастер странице. Делаю следующей конструкцией Index(_LayoutModel model), т.е. model по идеи должен содержать model мастер страницы. Так ли это? Далее я вызываю въюху indexView. которая должна отобразить данные. Как мне ей передать эти данные? Въюха типизированная и просит модель. В контроллере я пишу View(model); Кому будет передоватся эта модель? Мастер странице или въюхе? И далее самое интересное, мне надо что бы страница которая возвращалась пользователю, а она как уже известно будет состоять из мастер страницы с полем ввода и страницы с ответом, так вот в поле ввода должно отображаться введёный параметр - т.е. мы должны передать модель мастер страницы обратно. Блин бред какой то %-\ Я просто захотел сделать по всем правилам MVC - и получилась такая ересь... З.Ы. Изначально у меня было всё в куче, куча ViewBag и как не странно, прекрасно работало и выглядело просто.
0
|
2 / 2 / 1
Регистрация: 29.06.2011
Сообщений: 45
|
|||||||||||||
12.07.2011, 23:57 | 11 | ||||||||||||
Код
@using (Html.BeginForm("Твой обработчик(Index)", "Profile", FormMethod.Post, new { enctype = "multipart/form-data" })) { <input type="text" id="Coment" name="Coment" placeholder="Coment" required=""/> <input type="submit" value="Go!"/> } public ActionResult Твой обработчик(Index)( String Coment) { Как с лаяута сделать что бы на все страницы незнаю.... но так тока на Index буит
0
|
12.07.2011, 23:57 | |
12.07.2011, 23:57 | |
Помогаю со студенческими работами здесь
11
Выбор ноутбука между двумя моделями sony vaio На Ruby on Rails 5.2 создать приложение с двумя моделями Service и ServiceHistory Отобразить представление в GridView Не работает сборное правило Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |