powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Полное непонимание частичного представления...
41 сообщений из 41, показаны все 2 страниц
Полное непонимание частичного представления...
    #39733874
Здравствуйте Уважаемые!
Помогите разобраться с некоторыми аспектами использования частичного представления.
Недавно написал небольшой проект на ASP.NET WebForms, в котором в общем-то реализовал уже многое. Возникло желание освоить MVC. Для примера решил попробовать то же самое приложение переписать на этой технологии. Кое что уже удалось освоить, но вот стоит одна задача, которую пока никак не могу понять как сделать...
Задачу упростил до минимума для понимания...
Есть три модели:
Клиент
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[Key]
public Guid cID { get; set; }

[Required]
[StringLength(500)]
public string cName { get; set; }

[StringLength(50)]
public string cPhone { get; set; }

[StringLength(50)]
public string cMail { get; set; }


Контактные лица
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
[Key]
public Guid pID { get; set; }

public Guid cID { get; set; }

[Required]
[StringLength(150)]
public string pFIO { get; set; }

[StringLength(50)]
public string pPhone { get; set; }

[StringLength(50)]
public string pMail { get; set; }


Адреса
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
[Key]
public int adID { get; set; }

public Guid cID { get; set; }

[Required]
[StringLength(50)]
public string adType { get; set; }

[StringLength(6)]
public string adPostIndex { get; set; }

[StringLength(50)]
public string adPost { get; set; }



Есть представление List, которое показывает список клиентов со ссылками для перехода к их просмотру Details. В этом Details, помимо данных клиента, хочется видеть список их контактных лиц и список их адресов.
Я себе это представлял сделать через частичные представления. Для этого я в контроллере создал метод
Код: c#
1.
2.
3.
4.
public IActionResult Persons(System.Guid cid)
        {
            return PartialView(db.cl_Persons.Where(x => x.cID == cid));
        }


Создал соответствующее частичное представление List. Теперь вопросы:
1. Как правильно в представлении Details клиента вызвать данный метод передав ID клиента, чтобы это частичное представление отобразилось в представлении Details не вызвав обновления страницы и других побочных вещей?
2. И ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink?
Если кто-то может растолковать объясните пожалуйста! Буду признателен! С технологией только начинаю знакомиться, просьба отнестись с пониманием.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733883
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Морофф,
Ну вы же не с головы пишите. Дайте ссылку по частичным откуда пишите. Тем более изучаете.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733889
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффИ ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink?MVC это html без ajax.
Поэтому самое простое, это над инфой делаете ссылку с текстом напр. "Свернуть" или "Подробнее" и вызовом js метода divHiddenMy();
При клике выключаете видимость дива.
...
Или ищите крутые HTML компоненты.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733909
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Морофф1. Как правильно в представлении Details клиента вызвать данный метод передав ID клиента, чтобы это частичное представление отобразилось в представлении Details не вызвав обновления страницы и других побочных вещей?


Код: c#
1.
@{ Html.RenderAction(“Details”, params); } 



Сергей Морофф2. И ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink?

обычный js с hide|show
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733942
Petro123,
Чаще всего беру информацию здесь - https://metanit.com/sharp/aspnet5/7.5.php, но там подходящих примеров нет...
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733946
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффPetro123,
Чаще всего беру информацию здесь - https://metanit.com/sharp/aspnet5/7.5.php, но там подходящих примеров нет...
авторПоскольку здесь в частичное представление передается список строк, то мы можем использовать модель List<string>, чтобы получить этот список. Теперь изменим частичное представление _GetMessage.cshtml:?
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733950
Petro123,
Мне надо передать не список строк, а модель с выборкой (db.cl_Persons.Where(x => x.cID == cid)). Я не понимаю как это можно сделать из представления.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733953
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффPetro123,
Мне надо передать не список строк, а модель с выборкой (db.cl_Persons.Where(x => x.cID == cid)). Я не понимаю как это можно сделать из представления.
Модель у тебя в частичном. Передать нужно параметр айдишник cid.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733960
Petro123,
Я прошу прощения, видимо я совсем не точен в постановке вопросов! Я так понимаю надо передать контекст, а не модель!?
Модель в представлении действительно объявлена как - @model IEnumerable<testMVC.Models.Person>.
Как отфильтровать только те записи в контексте cl_Persons, у которых cID=cID из карточки Details (Model.cID)
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733964
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффЯ так понимаю надо передать контекст, а не модель!?я бы да, а ты как хочешь.
А из громкого слова контекст, пока один параметр, айдишник. Который наверняка будет в урл.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733965
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733968
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффPetro123,
Чаще всего беру информацию здесь - https://metanit.com/sharp/aspnet5/7.5.php, но там подходящих примеров нет...Возьмите книжку посерьезнее, например Фримена.

Возможно, у вас есть непонимание того, что основное представление, уйдя на клиента, на сервере больше не существует.
Так что чтобы получить частичное представление без перезагрузки страницы, вам нужно вызывать ОТДЕЛЬНЫЙ метод контроллера, запросив его с клиента, например с помощью $().load(). А контроллер, получив от клиента id, сам вызовет рендер частичного представления и вернет его клиенту.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733971
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТак что чтобы получить частичное представление без перезагрузки страницыя против динамики и ajax на начальном курсе.
Генерится вся страница вместе с частичными. Поэтому делаем hidden div.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мало ли, против чего ты.
Человеку нужна детализация с фильтрацией. Он может это получить либо загрузив полностью все элементы и фильтруя на клиенте (тогда ему нужно вообще изучать ангуляр или еще чего-то). Либо подгружать фильтрованные данные с сервера - и тут опять два варианта - обновлять страницу целиком, либо обновлять частично. Если обновлять частично - то тут аякс, никуда не денешься.
В MVC есть встроенные аякс-формы, можно обойтись в данном случае и без jQuery-аякса
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733975
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самое главное для новичка - понять, где клиент, а где сервер, особенно для того, кто пришел с вебформ.
Как выясняется - это частая ошибка для начинающих.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733978
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффВ этом Details, помимо данных клиента, хочется видеть список их контактных лиц и список их адресов.
http://clients/123
В этой страничке добавить адреса для клиента 123.
Это ТЗ для любителей усложнять и фильтровать.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733979
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProСамое главное для новичка - понять, где клиент, а где сервер, особенно для того, кто пришел с вебформ.
Как выясняется - это частая ошибка для начинающих.только миллион строк в этот вопрос не мешай и дозагрузку на load()
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733980
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЛибо подгружать фильтрованные данные с сервераНе надо ПОДГРУЖАТЬ!
Увы.
Рендеринг всего для clients/123
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733986
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".
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733992
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффЯ ещё не до конца понимаю, но чувствую, что надо решать через метод контроллера. Склоняюсь больше к Вашему решению. Хотя спасибо всем за отзывчивость.
Я прошу прощения! Проект не совсем 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 частичные действия убрали. Есть вью компоненты.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733994
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффASP.NET CORE,
В страничке есть:
Код: c#
1.
<partial name="имя. cshtml" />


?
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733995
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.я рад))
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39733996
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффASP.NET COREможет ты пошутил и не нажимал кнопку Новый проект? Там нет в шаблоне частичного?
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734007
Petro123,
Создав метод
Код: c#
1.
2.
3.
4.
public IActionResult Persons(System.Guid cid)
        {
            return PartialView(db.cl_Persons.Where(x => x.cID == cid));
        }


нажал правой кнопкой мыши внутри метода, в контекстном меню выбрал "Добавить представление", задал параметры и поставил галку "Создать как частичное представление".
Это разве надо понимать как что-то иное?
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734011
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффЭто разве надо понимать как что-то иное?
Да. Это находясь в модели, только очень низко по уровню создать Vew верхнего уровня.
Нужно наоборот.
1. Новый проект и поискать образец частичного. У меня он есть в любом ново проекте.
2. Хелп искать для Core 2.1 именно.
А потом заводить тему.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734018
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.Сорян, что ты имеешь ввиду под частичными действиями?
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734038
Тему можно закрыть и удалить.
В очередной раз понял, что ничего не понял. Только ещё больше запутался...
Спасибо и извините!
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734049
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Морофф,
Не нагнетай. Открыл проект, там есть уже частичное из за политики ЕС по кукам.
А если два мнения для тебя много, то не быть тебе прогером, шутка.))
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734056
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей МороффВ очередной раз понял, что ничего не понял. Только ещё больше запутался...Прочти Фримена. Метанит - не источник для серьезного понимания системы - это просто обрывки инфы, без углубления.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734059
Petro123,
Спасибо за поддержку! Есть книжка Фримена по Core, перечитаю на ночь, может появятся новые мысли! )
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734176
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.Сорян, что ты имеешь ввиду под частичными действиями?

https://www.davepaquette.com/archive/2016/01/02/goodbye-child-actions-hello-view-components.aspx
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734180
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttShocker.Proпропущено...
Сорян, что ты имеешь ввиду под частичными действиями?

https://www.davepaquette.com/archive/2016/01/02/goodbye-child-actions-hello-view-components.aspx А, вот это о чем, я им никогда и не пользовался. Есть же Html.Partial[Async]
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734184
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА, вот это о чем, я им никогда и не пользовался. Есть же Html.Partial[Async]То есть для ТС, у которого случился затык на Html.Action достаточно посоветовать Html.Partial, чтобы он хотя бы продвинулся с места затыка.
Остальные моменты - это другой вопрос.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734230
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА, вот это о чем, я им никогда и не пользовался. Есть же Html.Partial[Async]

Ну так это представление, а не частичное действие со своей вью моделью, которое можно переиспользовать :)
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734233
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТо есть для ТС, у которого случился затык на Html.Action достаточно посоветовать Html.Partial, чтобы он хотя бы продвинулся с места затыка.
Остальные моменты - это другой вопрос.

Не факт. Частичному представлению ты должен передать вью модель, или оно будет работать с вью-моделью страницы. Нет изоляции, и как следствие, правильного нормального переиспользования.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734239
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу так это представление, а не частичное действие со своей вью моделью, которое можно переиспользовать :)То-то это настолько было полезно, что выбросили из Core


hVosttНе факт. Частичному представлению ты должен передать вью модель, или оно будет работать с вью-моделью страницы.В случае конкретной страницы и конкретной части этой страницы это нормально. Вьюмодель части содержится в каком-нить свойстве вьюмодели и передается в Partial как аргумент - частичное представление работает со своей вьюмоделью.

А в случае каких-то библиотечных или шаред-элементов - го в компоненты - это нормально.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39734380
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttНу так это представление, а не частичное действие со своей вью моделью, которое можно переиспользовать :)То-то это настолько было полезно, что выбросили из Core

В смысле, выбросили? Вполне закономерно перенесли в отдельную конструкцию ViewComponent :)


Shocker.ProВ случае конкретной страницы и конкретной части этой страницы это нормально. Вьюмодель части содержится в каком-нить свойстве вьюмодели и передается в Partial как аргумент - частичное представление работает со своей вьюмоделью.

Чаще всего это нарушение принципов SOLID. Большие жирные вью-модели, содержащие другие модели -- это не гуд.


Shocker.ProА в случае каких-то библиотечных или шаред-элементов - го в компоненты - это нормально.

Да ладна. Любое приложение бьётся на функциональные модули. И если говорить чисто про Razor, то это также хорошо работает.

Попробуй :)
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39735400
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PartialView оно для прямого использования в родительском View, а не в контроллере. Если у тебя докоревский ASP.NET, то тут нужен Child Action, а если ASP.NET core, то View Component
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39735440
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatиспользования в родительском View, а не в контроллере.какая то игра слов. Контроллер вызывает view. Что не так?

fkthatЕсли у тебя докоревский ASP.NETтопик читал? Core!
И зачем только топик поднял.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39735486
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123какая то игра слов. Контроллер вызывает view. Что не так?

Ну да, тут вопрос просто терминологии. Контроллер, BTW, view не вызывает - он только указывает фреймворку какой вью вызвать и с какой моделью. В коре упразднили child actions - так что если хочется использовать partial с контроллером, то надо писать view component.
...
Рейтинг: 0 / 0
Полное непонимание частичного представления...
    #39735524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatтак что если хочется использовать partial с контроллером, то надо писать view component.ОК
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Полное непонимание частичного представления...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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