Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Полное непонимание частичного представления... / 25 сообщений из 41, страница 1 из 2
16.11.2018, 08:51
    #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
16.11.2018, 09:33
    #39733883
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полное непонимание частичного представления...
Сергей Морофф,
Ну вы же не с головы пишите. Дайте ссылку по частичным откуда пишите. Тем более изучаете.
...
Рейтинг: 0 / 0
16.11.2018, 09:52
    #39733889
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полное непонимание частичного представления...
Сергей МороффИ ещё было бы просто верхом счастья, на текущий момент, это сделать чтобы список, из частичного представления, раскрывался и скрывался бы по нажатию на какую-нибудь кнопку или ActionLink?MVC это html без ajax.
Поэтому самое простое, это над инфой делаете ссылку с текстом напр. "Свернуть" или "Подробнее" и вызовом js метода divHiddenMy();
При клике выключаете видимость дива.
...
Или ищите крутые HTML компоненты.
...
Рейтинг: 0 / 0
16.11.2018, 10:23
    #39733909
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полное непонимание частичного представления...
Сергей Морофф1. Как правильно в представлении Details клиента вызвать данный метод передав ID клиента, чтобы это частичное представление отобразилось в представлении Details не вызвав обновления страницы и других побочных вещей?


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



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

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

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


?
...
Рейтинг: 0 / 0
16.11.2018, 12:06
    #39733995
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полное непонимание частичного представления...
hVosttВ ASP.NET Core частичные действия убрали. Есть вью компоненты.я рад))
...
Рейтинг: 0 / 0
16.11.2018, 12:09
    #39733996
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полное непонимание частичного представления...
Сергей МороффASP.NET COREможет ты пошутил и не нажимал кнопку Новый проект? Там нет в шаблоне частичного?
...
Рейтинг: 0 / 0
16.11.2018, 12:18
    #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
16.11.2018, 12:23
    #39734011
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полное непонимание частичного представления...
Сергей МороффЭто разве надо понимать как что-то иное?
Да. Это находясь в модели, только очень низко по уровню создать Vew верхнего уровня.
Нужно наоборот.
1. Новый проект и поискать образец частичного. У меня он есть в любом ново проекте.
2. Хелп искать для Core 2.1 именно.
А потом заводить тему.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Полное непонимание частичного представления... / 25 сообщений из 41, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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