|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Здравствуйте Уважаемые! Помогите разобраться с некоторыми аспектами использования частичного представления. Недавно написал небольшой проект на ASP.NET WebForms, в котором в общем-то реализовал уже многое. Возникло желание освоить MVC. Для примера решил попробовать то же самое приложение переписать на этой технологии. Кое что уже удалось освоить, но вот стоит одна задача, которую пока никак не могу понять как сделать... Задачу упростил до минимума для понимания... Есть три модели: Клиент Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Контактные лица Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Адреса Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Есть представление List, которое показывает список клиентов со ссылками для перехода к их просмотру Details. В этом Details, помимо данных клиента, хочется видеть список их контактных лиц и список их адресов. Я себе это представлял сделать через частичные представления. Для этого я в контроллере создал метод Код: c# 1. 2. 3. 4.
Создал соответствующее частичное представление List. Теперь вопросы: 1. Как правильно в представлении Details клиента вызвать данный метод передав ID клиента, чтобы это частичное представление отобразилось в представлении Details не вызвав обновления страницы и других побочных вещей? 2. И ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink? Если кто-то может растолковать объясните пожалуйста! Буду признателен! С технологией только начинаю знакомиться, просьба отнестись с пониманием. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 08:51 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей Морофф, Ну вы же не с головы пишите. Дайте ссылку по частичным откуда пишите. Тем более изучаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 09:33 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффИ ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink?MVC это html без ajax. Поэтому самое простое, это над инфой делаете ссылку с текстом напр. "Свернуть" или "Подробнее" и вызовом js метода divHiddenMy(); При клике выключаете видимость дива. ... Или ищите крутые HTML компоненты. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 09:52 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей Морофф1. Как правильно в представлении Details клиента вызвать данный метод передав ID клиента, чтобы это частичное представление отобразилось в представлении Details не вызвав обновления страницы и других побочных вещей? Код: c# 1.
Сергей Морофф2. И ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink? обычный js с hide|show ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 10:23 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Petro123, Чаще всего беру информацию здесь - https://metanit.com/sharp/aspnet5/7.5.php, но там подходящих примеров нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 10:57 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффPetro123, Чаще всего беру информацию здесь - https://metanit.com/sharp/aspnet5/7.5.php, но там подходящих примеров нет... авторПоскольку здесь в частичное представление передается список строк, то мы можем использовать модель List<string>, чтобы получить этот список. Теперь изменим частичное представление _GetMessage.cshtml:? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:03 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Petro123, Мне надо передать не список строк, а модель с выборкой (db.cl_Persons.Where(x => x.cID == cid)). Я не понимаю как это можно сделать из представления. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:08 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффPetro123, Мне надо передать не список строк, а модель с выборкой (db.cl_Persons.Where(x => x.cID == cid)). Я не понимаю как это можно сделать из представления. Модель у тебя в частичном. Передать нужно параметр айдишник cid. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:11 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Petro123, Я прошу прощения, видимо я совсем не точен в постановке вопросов! Я так понимаю надо передать контекст, а не модель!? Модель в представлении действительно объявлена как - @model IEnumerable<testMVC.Models.Person>. Как отфильтровать только те записи в контексте cl_Persons, у которых cID=cID из карточки Details (Model.cID) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:20 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффЯ так понимаю надо передать контекст, а не модель!?я бы да, а ты как хочешь. А из громкого слова контекст, пока один параметр, айдишник. Который наверняка будет в урл. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:26 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей Морофф, https://stackoverflow.com/questions/20799658/how-can-i-pass-parameters-to-a-partial-view-in-mvc-4 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:29 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффPetro123, Чаще всего беру информацию здесь - https://metanit.com/sharp/aspnet5/7.5.php, но там подходящих примеров нет...Возьмите книжку посерьезнее, например Фримена. Возможно, у вас есть непонимание того, что основное представление, уйдя на клиента, на сервере больше не существует. Так что чтобы получить частичное представление без перезагрузки страницы, вам нужно вызывать ОТДЕЛЬНЫЙ метод контроллера, запросив его с клиента, например с помощью $().load(). А контроллер, получив от клиента id, сам вызовет рендер частичного представления и вернет его клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:33 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProТак что чтобы получить частичное представление без перезагрузки страницыя против динамики и ajax на начальном курсе. Генерится вся страница вместе с частичными. Поэтому делаем hidden div. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:38 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Мало ли, против чего ты. Человеку нужна детализация с фильтрацией. Он может это получить либо загрузив полностью все элементы и фильтруя на клиенте (тогда ему нужно вообще изучать ангуляр или еще чего-то). Либо подгружать фильтрованные данные с сервера - и тут опять два варианта - обновлять страницу целиком, либо обновлять частично. Если обновлять частично - то тут аякс, никуда не денешься. В MVC есть встроенные аякс-формы, можно обойтись в данном случае и без jQuery-аякса ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:42 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Самое главное для новичка - понять, где клиент, а где сервер, особенно для того, кто пришел с вебформ. Как выясняется - это частая ошибка для начинающих. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:43 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффВ этом Details, помимо данных клиента, хочется видеть список их контактных лиц и список их адресов. http://clients/123 В этой страничке добавить адреса для клиента 123. Это ТЗ для любителей усложнять и фильтровать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:46 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProСамое главное для новичка - понять, где клиент, а где сервер, особенно для того, кто пришел с вебформ. Как выясняется - это частая ошибка для начинающих.только миллион строк в этот вопрос не мешай и дозагрузку на load() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:47 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProЛибо подгружать фильтрованные данные с сервераНе надо ПОДГРУЖАТЬ! Увы. Рендеринг всего для clients/123 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 11:50 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProТак что чтобы получить частичное представление без перезагрузки страницы, вам нужно вызывать ОТДЕЛЬНЫЙ метод контроллера, запросив его с клиента, например с помощью $().load(). А контроллер, получив от клиента id, сам вызовет рендер частичного представления и вернет его клиенту. Я ещё не до конца понимаю, но чувствую, что надо решать через метод контроллера. Склоняюсь больше к Вашему решению. Хотя спасибо всем за отзывчивость. Я прошу прощения! Проект не совсем MVC, а ASP.NET CORE, в котором @Html.Action("Persons", "Home", new { cid = Model.cID }) не работает похоже - 'IHtmlHelper<Client>" не содержит определение для "Action", и наиболее подходящий перегруженный метод расширения "UrlHelperExtensions.Action(IUrlHelper, string, string, object)" требует наличия получателя типа "IUrlHelper". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:00 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффЯ ещё не до конца понимаю, но чувствую, что надо решать через метод контроллера. Склоняюсь больше к Вашему решению. Хотя спасибо всем за отзывчивость. Я прошу прощения! Проект не совсем MVC, а ASP.NET CORE, в котором @Html.Action("Persons", "Home", new { cid = Model.cID }) не работает похоже - 'IHtmlHelper<Client>" не содержит определение для "Action", и наиболее подходящий перегруженный метод расширения "UrlHelperExtensions.Action(IUrlHelper, string, string, object)" требует наличия получателя типа "IUrlHelper". В ASP.NET Core частичные действия убрали. Есть вью компоненты. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:04 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффASP.NET CORE, В страничке есть: Код: c# 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:05 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
hVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.я рад)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:06 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффASP.NET COREможет ты пошутил и не нажимал кнопку Новый проект? Там нет в шаблоне частичного? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:09 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Petro123, Создав метод Код: c# 1. 2. 3. 4.
нажал правой кнопкой мыши внутри метода, в контекстном меню выбрал "Добавить представление", задал параметры и поставил галку "Создать как частичное представление". Это разве надо понимать как что-то иное? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:18 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффЭто разве надо понимать как что-то иное? Да. Это находясь в модели, только очень низко по уровню создать Vew верхнего уровня. Нужно наоборот. 1. Новый проект и поискать образец частичного. У меня он есть в любом ново проекте. 2. Хелп искать для Core 2.1 именно. А потом заводить тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:23 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
hVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.Сорян, что ты имеешь ввиду под частичными действиями? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:32 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Тему можно закрыть и удалить. В очередной раз понял, что ничего не понял. Только ещё больше запутался... Спасибо и извините! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:46 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей Морофф, Не нагнетай. Открыл проект, там есть уже частичное из за политики ЕС по кукам. А если два мнения для тебя много, то не быть тебе прогером, шутка.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:50 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Сергей МороффВ очередной раз понял, что ничего не понял. Только ещё больше запутался...Прочти Фримена. Метанит - не источник для серьезного понимания системы - это просто обрывки инфы, без углубления. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:53 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Petro123, Спасибо за поддержку! Есть книжка Фримена по Core, перечитаю на ночь, может появятся новые мысли! ) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 12:53 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.Сорян, что ты имеешь ввиду под частичными действиями? https://www.davepaquette.com/archive/2016/01/02/goodbye-child-actions-hello-view-components.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 15:07 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
hVosttShocker.Proпропущено... Сорян, что ты имеешь ввиду под частичными действиями? https://www.davepaquette.com/archive/2016/01/02/goodbye-child-actions-hello-view-components.aspx А, вот это о чем, я им никогда и не пользовался. Есть же Html.Partial[Async] ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 15:12 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProА, вот это о чем, я им никогда и не пользовался. Есть же Html.Partial[Async]То есть для ТС, у которого случился затык на Html.Action достаточно посоветовать Html.Partial, чтобы он хотя бы продвинулся с места затыка. Остальные моменты - это другой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 15:20 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProА, вот это о чем, я им никогда и не пользовался. Есть же Html.Partial[Async] Ну так это представление, а не частичное действие со своей вью моделью, которое можно переиспользовать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 16:10 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProТо есть для ТС, у которого случился затык на Html.Action достаточно посоветовать Html.Partial, чтобы он хотя бы продвинулся с места затыка. Остальные моменты - это другой вопрос. Не факт. Частичному представлению ты должен передать вью модель, или оно будет работать с вью-моделью страницы. Нет изоляции, и как следствие, правильного нормального переиспользования. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 16:12 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
hVosttНу так это представление, а не частичное действие со своей вью моделью, которое можно переиспользовать :)То-то это настолько было полезно, что выбросили из Core hVosttНе факт. Частичному представлению ты должен передать вью модель, или оно будет работать с вью-моделью страницы.В случае конкретной страницы и конкретной части этой страницы это нормально. Вьюмодель части содержится в каком-нить свойстве вьюмодели и передается в Partial как аргумент - частичное представление работает со своей вьюмоделью. А в случае каких-то библиотечных или шаред-элементов - го в компоненты - это нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 16:17 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttНу так это представление, а не частичное действие со своей вью моделью, которое можно переиспользовать :)То-то это настолько было полезно, что выбросили из Core В смысле, выбросили? Вполне закономерно перенесли в отдельную конструкцию ViewComponent :) Shocker.ProВ случае конкретной страницы и конкретной части этой страницы это нормально. Вьюмодель части содержится в каком-нить свойстве вьюмодели и передается в Partial как аргумент - частичное представление работает со своей вьюмоделью. Чаще всего это нарушение принципов SOLID. Большие жирные вью-модели, содержащие другие модели -- это не гуд. Shocker.ProА в случае каких-то библиотечных или шаред-элементов - го в компоненты - это нормально. Да ладна. Любое приложение бьётся на функциональные модули. И если говорить чисто про Razor, то это также хорошо работает. Попробуй :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2018, 21:30 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
PartialView оно для прямого использования в родительском View, а не в контроллере. Если у тебя докоревский ASP.NET, то тут нужен Child Action, а если ASP.NET core, то View Component ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 07:32 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
fkthatиспользования в родительском View, а не в контроллере.какая то игра слов. Контроллер вызывает view. Что не так? fkthatЕсли у тебя докоревский ASP.NETтопик читал? Core! И зачем только топик поднял. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 09:53 |
|
Полное непонимание частичного представления...
|
|||
---|---|---|---|
#18+
Petro123какая то игра слов. Контроллер вызывает view. Что не так? Ну да, тут вопрос просто терминологии. Контроллер, BTW, view не вызывает - он только указывает фреймворку какой вью вызвать и с какой моделью. В коре упразднили child actions - так что если хочется использовать partial с контроллером, то надо писать view component. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2018, 11:14 |
|
|
start [/forum/topic.php?all=1&fid=18&tid=1355086]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 259ms |
total: | 428ms |
0 / 0 |