Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Как получить 2 сущности из контроллера и заполнить их на странице? / 24 сообщений из 24, страница 1 из 1
18.05.2012, 17:16
    #37801475
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Например:
О нас Новости
Трампарам | 01.04.2010
Мы такие все хорошие | Шутка дня ...

Контроллер на эту страницу вот так отрабатывает:
Код: c#
1.
2.
3.
4.
5.
6.
    public ActionResult Index()
    {
      ViewBag.Message = "Фотостудия Eve приветствует Вас!";

      return View(db.News.ToList());
    }



В модели идет обработка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 @foreach (var item in Model)
  { 
    <tr>
      <td>
        @Html.DisplayFor(modelItem => item.newsDate)
      </td>
        <td>
        @Html.DisplayFor(modelItem => item.newsContent)
      </td>
    </tr>
  }



Но тут я получаю только новости, а как мне еще другой контент передать.
Заранее спасибо всем откликнувшимся, ногами не бить первый день asp|net
...
Рейтинг: 0 / 0
18.05.2012, 17:44
    #37801546
just_for_sql_ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Fantastick,

Простейший способ - сделать ViewModel, заполнить всеми нужными данными, и передавать во вьюху ее, а не сущности
...
Рейтинг: 0 / 0
18.05.2012, 17:45
    #37801549
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Код: c#
1.
ViewBag.OtherData = "другие данные:)), хоть класс, хоть структуру";



ДопустИм вариант создания отдельной ViewModel для данной вьюхи и передавать ее.
...
Рейтинг: 0 / 0
18.05.2012, 18:02
    #37801585
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYS,

ViewBag в топку, only model!
...
Рейтинг: 0 / 0
18.05.2012, 18:40
    #37801645
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Deza,

А как через model?
...
Рейтинг: 0 / 0
18.05.2012, 19:07
    #37801669
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Deza,

И почему в топку?
...
Рейтинг: 0 / 0
18.05.2012, 20:54
    #37801749
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
FantastickDeza,

А как через model?

смотреть
http://www.techdays.ru/videos/ASP.NET

начать с Тренинг ASP.NET MVC 3 - Модуль 1. Знакомство с MVC 3

и до
Тренинг ASP.NET MVC 3 - Модуль 7. Внедрение зависимостей

ну и остальные тоже интересные
...
Рейтинг: 0 / 0
18.05.2012, 21:13
    #37801758
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Deza,

За ссылки огромное спасибо, но вот в данной ситуации как делать? есть ли простое решение или гиперболойд инженера Гарина реализовывать?
...
Рейтинг: 0 / 0
18.05.2012, 21:22
    #37801769
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
DezaSanSYS,

ViewBag в топку, only model!
Аргументируйте, пожалуйста
ViewBag для передачи какой-то мелкой доп. инфы считаю приемлемым методом (только не в отношении структур, вы же понимаете особенности работы clr с dynamic?)
Для остального, конечно же - ViewModel

http://msdn.microsoft.com/ru-ru/magazine/gg650669.aspx
...
Рейтинг: 0 / 0
23.05.2012, 17:12
    #37808300
Fantastick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Посмотрел я уроки, спасибо огромное.
Но то ли я плохо смотрел, то ли не освещена эта тема, но кроме как вариантов:
1. через ViewBag передать 2ую сущность
2. передать весь контекст в представление

Хорошо ли так делать или как это можно сделать по другому?
...
Рейтинг: 0 / 0
23.05.2012, 17:36
    #37808358
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYSDezaSanSYS,

ViewBag в топку, only model!
Аргументируйте, пожалуйста
ViewBag для передачи какой-то мелкой доп. инфы считаю приемлемым методом (только не в отношении структур, вы же понимаете особенности работы clr с dynamic?)
Для остального, конечно же - ViewModel

http://msdn.microsoft.com/ru-ru/magazine/gg650669.aspx

SanSYS, он прав. ViewBag в топку. Только модель.

Код: c#
1.
2.
3.
4.
5.
class MyClass
{
    public A PropertyA { get; set; }
    public B PropertyB { get; set; }
}
...
Рейтинг: 0 / 0
23.05.2012, 18:17
    #37808434
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
МСУ, ок, а в случае если вывести данные необходимо где-то вне возвращаемой вьюшки? (ajax не обсуждаем)
к примеру в лейауте? - мс в своем стандартном шаблоне использует для вывода заголовка примерно такое: ViewBag.Title, да и Фриман с Сандерсеном не брезгуют

А учитывая, что ViewBag это по сути тупо свойство с отсылкой/оберткой над ViewData, то оно добавляет только удобства в использовании

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
         public dynamic ViewBag {
            get {
                if (_dynamicViewData == null) {
                    _dynamicViewData = new DynamicViewDataDictionary(() => ViewData);
                }
                return _dynamicViewData;
            }
        }



Сегодня я начал собирать один новенький проект, пока создано лишь 11 вьюх, ViewBag использован только для передачи Title, вряд ли заюзаю его еще для чего нить, по вполне понятным причинам

Не подумай что я утверждаю что использовать ViewBag везде и всегда можно, но есть случаи когда вполне приемлемо, главное не переусердствовать, а то потом руки отрывать тем кто использовал viewbag налево и направо

Кстати - при биндинге эдиторов, вроде наличие данных для биндинга сначала проверяются во ViewBag, после во ViewData, а потом уже в пропертях модели (но это при использовании синтаксиса типа Html.DropDownList("DataKey"), кажется)
Но это я точно не знаю, т.к. с фреймворком MVC почти незнаком
...
Рейтинг: 0 / 0
23.05.2012, 18:24
    #37808453
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYS, ViewBag.Title и Model, разве не чувствуете разницы? :)
...
Рейтинг: 0 / 0
23.05.2012, 18:27
    #37808460
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Fantastick,
что то типа такого
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public ActionResult Details(int? id, string topics, string sec)
        {
            var searchModel = new SearchModel
                                  {
                                      ColsPerPageM = colsPerPage,
                                      QueryType = queryType,
                                      ResultModels =
                                          SearchResultHelper.GreateSearchResult(queryType, colsPerPage,
                                                                                currentPage*itemsPerPage, itemsPerPage,
                                                                                res, votePermissions, currentPage),
                                      Pages =
                                          PagerHelper.CreatePageSearch(itemsPerPage,
                                                                       Convert.ToInt32(res.GetMaxAvailableItemsCount()),
                                                                       this.Url, p == null ? 0 : p.Value, query,
                                                                       queryType),
                                      
                                      Query = q,
                                      Navigation = new NavigationModel
                                                       {
                                                           Menu =
                                                               MainMenuhelper.CreateSearchMenu(q, queryType, currentPage,
                                                                                               this.Url),
                                                           IsAjax = true
                                                       },
                                      IsPost = false
                                  };
            ViewData.Model = searchModel ;
            return this.View();
        }
...
Рейтинг: 0 / 0
23.05.2012, 19:18
    #37808536
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
DezaFantastick,
что то типа такого
Код: c#
1.
2.
3.
            ViewData.Model = searchModel ;
            return this.View();
        }



Код: c#
1.
2.
3.
            //  ViewData.Model = searchModel; это на кой?
            return View(searchModel);
        }
...
Рейтинг: 0 / 0
23.05.2012, 21:28
    #37808650
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYSМСУ, ок, а в случае если вывести данные необходимо где-то вне возвращаемой вьюшки? (ajax не обсуждаем)
Без разницы. Используем всегда модель.
SanSYSНо это я точно не знаю, т.к. с фреймворком MVC почти незнаком
А почему тогда советы даете? :)
...
Рейтинг: 0 / 0
24.05.2012, 00:09
    #37808765
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
МСУSanSYSМСУ, ок, а в случае если вывести данные необходимо где-то вне возвращаемой вьюшки? (ajax не обсуждаем)
Без разницы. Используем всегда модельНу.. Не совсем без разницы, вот смотри:
1. есть _layout
2. есть типизированная вьюха, использует _layout для рендера
3. передаем модель { Object SomeData, String Title }
4. Каким образом использовать в _layout Model.Title?

Варианты:
1. @section - хороший вариант при условиях: наличия секции, вьюха непосредственно юзает _layout
2. @ViewData.Model.Title - ViewData.Model то ли Object, то ли dynamic, нужны лишние проверки
3. при использовании ajax - понятно, все просто, но нужно писать клиентский лишний код хотя бы раз
4. ViewBag.Title - относительно неплохой вариант, учитывая что при отсутствии свойства нет даже эксепшенов при необработанном выводе (хотя в этом есть большая проблема, посему и не использую, + мне чаще удобнее юзать модели)

МСУSanSYSНо это я точно не знаю, т.к. с фреймворком MVC почти незнаком
А почему тогда советы даете? :)Потому что полагаю, что я могу дать советы на простые вопросы, потому и даю
Да и к тому же - не мало интересного можно узнать :)
...
Рейтинг: 0 / 0
24.05.2012, 01:00
    #37808793
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
ViewBag, ViewData следует использовать для вывода дополнительной (служебной) информации: заголовок страницы, сообщения, индекс текущей страницы в пейджинге. Для того, что нужно ТСу - ViewModel.
...
Рейтинг: 0 / 0
24.05.2012, 10:59
    #37809211
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYS4. Каким образом использовать в _layout Model.Title?

Как вариант, можно сделать MasterViewModel, и наследовать от нее остальные. // PageViewModel : MasterViewMode
...
Рейтинг: 0 / 0
24.05.2012, 11:19
    #37809272
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYS, я уже тыщу раз писал о модели представления. Собственно, это и есть бест-практис для MVC - отдаем модель представления, которая в себя включает как и модель, так и вспомогательные классы для формирования представления.
...
Рейтинг: 0 / 0
24.05.2012, 11:29
    #37809300
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
МСУ .. так и вспомогательные классы для формирования представления.

А "вспомогательные классы для формирования представления" это что? Контролы что-ли? :]
...
Рейтинг: 0 / 0
24.05.2012, 11:32
    #37809314
Deza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
Парамон
Код: c#
1.
2.
3.
            //  ViewData.Model = searchModel; это на кой?
            return View(searchModel);
        }



Привычка:)
...
Рейтинг: 0 / 0
24.05.2012, 14:49
    #37809893
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
МСУSanSYS, я уже тыщу раз писал о модели представления. Собственно, это и есть бест-практис для MVC - отдаем модель представления, которая в себя включает как и модель, так и вспомогательные классы для формирования представления.
Это бест-практис, однозначно ты прав, как бы в этом отношении даже не собираюсь дискуссировать )
...
Рейтинг: 0 / 0
24.05.2012, 16:45
    #37810229
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - Как получить 2 сущности из контроллера и заполнить их на странице?
SanSYSЭто бест-практис, однозначно ты прав, как бы в этом отношении даже не собираюсь дискуссировать )
Тогда спич можно закрывать :)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Как получить 2 сущности из контроллера и заполнить их на странице? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]