Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 28.03.2019
Сообщений: 5

MVC 5 как передать две и более переменных из контроллера в View?

21.02.2020, 10:35. Показов 4344. Ответов 11

Студворк — интернет-сервис помощи студентам
Совсем недавно начал осваивать .Net Core MVC и столкнулся с вполне типичной задачей, когда загружается страница категории, она должна подгружать данные по текущей категории, затем отобразить под категории и контент для этой страницы, не говоря уже о других подгрузках данных.

Я использую VS2017 и .Net Core 2.2 MVC 5 с Entity Framework

В примере ниже, мы видим выборку данных в переменные a1 и a2, как передать a1 все просто и ясно, но как быть с a2, которая содержит второй набор данных, как мне ее передать с контроллера в представление? Ведь таких наборов может быть больше

C#
1
2
3
4
5
6
7
8
9
10
public async Task<IActionResult> Index()
        {
            var ProductCategories_ = from m in _context.ProductCategories
                         select m;
            ProductCategories_ = ProductCategories_.Where(s => s.ParentId == 0);
            var a1 = await ProductCategories_.ToListAsync();
 
            var a2 = await _context.ProductList.ToListAsync();
            return View(a1);
        }
Благодарю за любую помощь)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2020, 10:35
Ответы с готовыми решениями:

spring-mvc передача данных из контроллера в view
у меня возникла проблема. пробую писать жалкое подобие сайта на Java. и мне необходимо передавать данные между контроллером и вьюхой....

Как передать множество переменных с контроллера в вид
Если передать так.то переменную id не хочет передавать return...

C# + Postres Передать данный во View из контроллера
Работаю с Постгрес. Есть не совсем обычное задание. Нельзя использовать представления и соответственно нужно делать все запросы к базе...

11
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
21.02.2020, 11:01
.. создайте промежуточную модель (называйте это DTO, ViewModel, как угодно), которая будет включать в себя нужные списки, после запроса к базе поместите все ваши переменные в эту промежуточную модель (через foreach, например) и её и выводите в представлении ...
0
0 / 0 / 0
Регистрация: 28.03.2019
Сообщений: 5
21.02.2020, 11:32  [ТС]
Ох, мне даже сложно вам сформулировать вопрос, т.к. язык для меня новый и с MVC впервые сталкиваюсь, но попробую обьяснить.
Я когда создавал базу по EF code first то уже делал базовую модель и по ней создается скрипт миграции, который создает бд и содержит приблизительно такой код

C#
1
2
3
4
5
6
public class ProductCategories
    {
        public int Id { get; set; }
        public int BaseId { get; set; }
        public int ParentId { get; set; }
        ......
Могу ли я использовать эту модель для того что вы сказали?
Ну и конечно я не понимаю как это устроено, создам я ту модель, но у меня есть входящие данные а в некоторых случаях параметров будет больше. Как в таком случае, будет выглядеть вызов представления из контроллера и значит ли это то что я делаю перенос обработки данных из контроллера в модель?

Я так понимаю что при такой модели данные должны изменится следующим образом
Контроллер
C#
1
2
3
4
public async Task<IActionResult> Index()
        {
            return View();
        }
модель
C#
1
2
3
4
5
6
7
8
9
10
11
12
    {
            public int Id { get; set; }
            public int BaseId { get; set; }
            public int ParentId { get; set; }
            ......
 
            var ProductCategories_ = from m in _context.ProductCategories
                         select m;
            ProductCategories_ = ProductCategories_.Where(s => s.ParentId == 0);
            var a1 = await ProductCategories_.ToListAsync(); 
            var a2 = await _context.ProductList.ToListAsync();
            ......
Это одно из того что я вообще не могу понять, механики того как это все работает

Добавлено через 4 минуты
Кстати я буду очень благодарен если вы сможете подсказать статью, которая поможет разобраться именно в этом вопросе. Потому что не зная предмета, я не могу даже правильно сформулировать поисковый запрос, что бы найти подходящую информацию, потому что на майкрософте и метаните смотрел что все могло бы быть как то связанно с этим, но там этот вопрос не поднимается, во всяком случае у меня не вышло найти это
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
21.02.2020, 11:49
,.. вам для решения вашего вопроса надо или гуглить в сторону stackoverflow с конкретным запросом, либо попытаться усидчиво ( ) прочитать, например, Getting Started от Microsoft
reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application
.. просто в MVC настолько все как-то ... мудрено..., что просто на пальцах не объяснить .. я, честно сказать, использую платформу WebAPI + SPA, где все проще ...
0
0 / 0 / 0
Регистрация: 28.03.2019
Сообщений: 5
21.02.2020, 11:57  [ТС]
Благодарю за чтиво, буду пробовать)
После писания на чистом пхп, нужно с чего то начинать, это показалось мне более интересным т.к. свежая технология и в visual studio все таки эти вещи на много приятней делать, хорошая ide, много инфы и все такое, но как и в любом программировании, есть вопросы, ответы на которые можно провозится кучу времени, а со временем понимаешь какой это пустяк) Что ж, во всяком случае сейчас у меня есть еще одно направление в сторону решения, надеюсь будет полезным
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
21.02.2020, 12:09
Лучший ответ Сообщение было отмечено Pacm3n как решение

Решение

.. просто и в MVC, и в WebAPI есть смысл (хотя и не обязательно, но рекомендуется) разделять модель, которую вы создали для работы с базой данных, и которая привязана к DbContext, и модель, которую вы передаете в представление (ViewModel)... Это может показаться излишним промежуточным шагом, но позволит вам в контроллере (до отдачи представления в браузер) сформировать нужную структуру данных из нескольких запросов к бд, если нужно ...
1
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
21.02.2020, 16:11
Цитата Сообщение от carrotik Посмотреть сообщение
есть смысл (хотя и не обязательно, но рекомендуется)

Нууууу, это какбы целый паттерн, который очень настоятельно рекомендуется.... И если работать со сложными моделями, то категорически обязательно
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
21.02.2020, 17:52
Цитата Сообщение от yurickas Посмотреть сообщение
Нууууу, это какбы целый паттерн, который очень настоятельно рекомендуется.... И если работать со сложными моделями, то категорически обязательно
... я к тому, что ASP.NET этого (выкладывать сущность во вьюмодель) явно не запрещает (а зря ..) ..
0
 Аватар для Cupko
654 / 591 / 171
Регистрация: 17.07.2012
Сообщений: 1,680
Записей в блоге: 1
21.02.2020, 19:17
yurickas, что за паттерн такой?
В MVC вообще грех какие-то прокладки создавать, ибо дальше сервера эти данные никуда не уходят. Каждая созданная вью-моделька тянет за собой еще и создание маппера, тем самым ухудшая поддерживаемость приложения по определению.
0
163 / 138 / 35
Регистрация: 25.11.2015
Сообщений: 910
21.02.2020, 19:25
Цитата Сообщение от Cupko Посмотреть сообщение
что за паттерн такой?
mvvm

Цитата Сообщение от Cupko Посмотреть сообщение
В MVC вообще грех какие-то прокладки создавать, ибо дальше сервера эти данные никуда не уходят. Каждая созданная вью-моделька тянет за собой еще и создание маппера, тем самым ухудшая поддерживаемость приложения по определению.
А вот тут я категорически не соглашусь. Чем больше таблиц, тем больше понимаешь, что без вьюмоделей и маппера жизни нету. Просто когда это все правильно организовано поддерживать даже легче.
0
 Аватар для Cupko
654 / 591 / 171
Регистрация: 17.07.2012
Сообщений: 1,680
Записей в блоге: 1
21.02.2020, 19:33
Цитата Сообщение от yurickas Посмотреть сообщение
mvvm
MVVM - отдельная тема, не нужно мешать. Там у вью-модели есть своя ответственность, в отличие от вью-модели MVC. Сейчас еще кто-то и использует их для валидаций, но и это уже грех с точки зрения ООП.
Цитата Сообщение от yurickas Посмотреть сообщение
А вот тут я категорически не соглашусь. Чем больше таблиц, тем больше понимаешь, что без вьюмоделей и маппера жизни нету. Просто когда это все правильно организовано поддерживать даже легче.
Ваше право соглашаться/не соглашаться. Но каждый класс, каждая строчка кода ухудшает поддерживаемость, вне зависимости насколько она хороша. А с точки зрения отсутсвия ответсвенности у DTO/ViewModels в целом, это уже получается явное усложнение кода без каких-либо профитов.
0
0 / 0 / 0
Регистрация: 28.03.2019
Сообщений: 5
25.02.2020, 14:18  [ТС]
Благодарю всех за внимание я нашел четкую инструкцию как мне достичь цели @carrotik оказался прав на счет вью модели, для меня это максимально простое решение, которое позволяет насышать определенные страницы необходимыми мне данными и ничего лишнего. Может кто будет задаватся данным вопросом, то посмотрите этот гайд, это дает понимание
https://metanit.com/sharp/aspnet5/8.2.php

В данный момент мне кажется что проще некуда, когда для страницы создаешь вьюмодель, добавляя только те данные которые будут обрабатываться, что позволяет менять как саму вьюмодель, а также модели данных, поправьте если я ошибаюсь с термином, но обратно таки, если вы знаете решение более легкое и то что позволит легко работать с кодом в будущем, я с благодарностью приму ваши советы, я за эффективность и минимализм потребления ресурсов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2020, 14:18
Помогаю со студенческими работами здесь

Как передать в функцию две переменных?
Хочу написать простейших калькулятор через условия (Если пользователь выбрал 1, значит вызываем функцию сложения, если 2 - вычитания), и...

Как передать из одного контроллера объект модели в строго типизированное представление другого контроллера
Есть строго типизированное представление в контроллере Main, в методе ListOrders. Как в него можно передать модель, класса Customer из...

Не могу передать данные размером более 1 Мбайт в контроллер mvc приложения
Пытаюсь передать 10000000 байт в контроллер asp .net mvc приложения, но response выдает...

Как передать параметры из одного View в EditorFor другого View
Здравствуйте. Есть 2 view, первое просто отображает данные, 2 должно их редактировать, в 1 view есть текст, необходимо передать этот текст...

Можно ли передать в функцию две переменных через 1 какую-нибудь конструкцию?
Можно ли передать в функцию две переменных через 1 конструкцию чтобы вместо этого int a=5; int b=10; Func (a,b); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru