background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "How to build a website with Umbraco 10 - Part 15 - View Components"

input logo icon
Теги видео
|

Теги видео

CODESHARE6855
codeshare
code
share
paul
seal
prjseal
umbraco
umbraco10
v10
10
tutorial
series
free
training
howto
website
build
dotnet
core
view
component
viewcomponent
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:05
Привет, я Пол Сил из co-chair.com, Великобритания,
00:00:08
добро пожаловать на 15-й эпизод этой
00:00:11
серии, где я покажу вам, как создать
00:00:12
веб-сайт в umbraco 10. В этом эпизоде
00:00:15
мы рассмотрим, какие
00:00:17
компоненты представления так что это будет один из
00:00:20
первых случаев, когда мы на самом деле рассматриваем
00:00:21
какой-то c-sharp coding.net6,
00:00:24
поэтому мы собираемся взглянуть на это
00:00:26
и просто понять, что такое
00:00:28
компоненты представления и как мы можем используйте их
00:00:30
в этом проекте,
00:00:31
так что давайте начнем, поэтому у меня
00:00:34
открыта Visual Studio. У меня запущена командная строка.
00:00:37
dot net watch run в папке моего сайта,
00:00:40
там вы можете увидеть чистую папку сайта Dot.
00:00:42
Я запускаю сайт,
00:00:46
и это сайт сейчас, поэтому одна из
00:00:50
особенностей компонентов представления заключается в том, что
00:00:52
они
00:00:53
не являются частью запроса страницы,
00:00:55
нет привязки к модели, и я имею в виду,
00:00:58
что если бы
00:01:00
на странице были какие-то странные строки, они могли бы
00:01:02
автоматически привязываться к
00:01:04
этим что касается переданной модели, это то,
00:01:07
что мы могли бы найти обычно, но с
00:01:09
компонентом представления, да, это не часть
00:01:11
запроса, это не часть контроллера или
00:01:13
чего-то еще, это просто автономный
00:01:16
компонент, который вы можете назвать
00:01:20
хм, есть некоторая документация
00:01:21
о компонентах представления в dotnet6, поэтому я
00:01:25
оставлю это для вас в видео,
00:01:28
но мы собираемся использовать это для создания
00:01:31
нашего собственного компонента представления, и я бы хотел
00:01:33
создать его для навигации,
00:01:35
и, если у нас будет время, один для нижнего колонтитула, так что
00:01:39
когда я делал это, прежде чем я
00:01:43
упомянул о компонентах представления, но мы не
00:01:45
хотели вдаваться в подробности, теперь пришло
00:01:46
время вдаваться в подробности, так что компоненты представления,
00:01:49
что это такое, тогда хорошо, Microsoft
00:01:53
говорит, что они похожи на частичные представления,
00:01:55
но они гораздо более мощные,
00:01:57
они не используют привязку модели, они зависят
00:01:59
от данных, передаваемых при вызове
00:02:01
компонента представления, и эта статья была
00:02:04
написана с использованием контроллеров и представлений, но
00:02:07
компоненты работают с бритвенными страницами, и
00:02:09
то, что мы много делали в последнее время с
00:02:12
ощущениями umbraco очень похоже на Razor Pages,
00:02:15
потому что мы особо не работали
00:02:16
с контроллерами,
00:02:18
поэтому они вполне подходят,
00:02:20
так что у меня открыт код Visual Studio,
00:02:24
я просто закрою все эти вкладки
00:02:27
и давайте посмотрим у нашего мастера, поэтому
00:02:31
в мастере мы
00:02:33
вызывали эти партиалы, у нас есть один для
00:02:35
метаданных,
00:02:36
у нас есть один для навигации, и у
00:02:38
нас есть один для нижнего колонтитула,
00:02:40
теперь с частичным маршрутизацией для
00:02:44
частичного находится в представлениях, затем в партиалах,
00:02:46
а затем в любой папке, которую вы хотите, на самом деле, так
00:02:49
мы и делали это до сих пор,
00:02:52
но на этот раз я хочу
00:02:55
создать несколько компонентов представления,
00:02:57
и для компонента представления существуют разные правила, чтобы
00:03:02
создать компонент представления, он состоит из двух
00:03:04
частей, в нем есть часть класса c-sharp,
00:03:07
а
00:03:10
также соответствующий файл UM Razer,
00:03:19
так что мы можем видеть этот UM здесь, так что это
00:03:22
наш класс,
00:03:24
и есть три способа создать один
00:03:27
UM
00:03:29
и Я не хочу, чтобы это видео было просто
00:03:30
просмотром документации, но
00:03:33
в принципе вы
00:03:35
можете создать его,
00:03:37
унаследовав от компонента представления, позвольте мне
00:03:40
просто поискать это,
00:03:49
да, его можно создать только
00:03:51
следующее, поэтому на основе
00:03:53
компонентов представления, так что это используя его так же, как
00:03:57
когда мы создаем класс и говорим, что он
00:03:59
наследует от этого,
00:04:01
или мы можем украсить класс атрибутом компонента представления,
00:04:07
гм, или мы можем создать класс,
00:04:08
имя которого заканчивается суффиксом компонента представления,
00:04:10
так что интересно, что у него есть
00:04:12
эти три соглашения,
00:04:14
и что мне нравится делать, когда я создаю свое,
00:04:17
я покажу вам свой предпочтительный способ сделать
00:04:19
это, чтобы они также могли быть в любой папке на
00:04:22
сайте, но я
00:04:24
собираюсь просто создайте свой в
00:04:27
папке с именем компоненты, поэтому я просто
00:04:29
щелкну по этому файлу здесь, чтобы я
00:04:31
мог создать папку в корне и
00:04:33
назвать ее
00:04:35
внешними компонентами, но, как говорится, это может быть любой
00:04:38
файл, любое имя папки,
00:04:42
тогда в этом я собираюсь создать себе
00:04:45
файл, и я буду называть эту
00:04:48
навигацию
00:04:51
сейчас, если захочу, я мог бы просто назвать его
00:04:53
компонентом представления навигации, и это сейчас,
00:04:55
потому что он так назван, и класс
00:04:57
я назову его так внутри кода
00:04:59
он также автоматически станет
00:05:01
единым, но мне нравится делать пояс,
00:05:03
скобки и
00:05:04
компонент представления навигации dot CS,
00:05:09
так что теперь у нас есть это, и теперь мы можем сделать public.
00:05:12
О, давайте создадим пространство
00:05:16
имен пространства имен, чтобы мы были в чистой Dot компоненты сайта dot,
00:05:24
если вы используете Visual Studio, вы получаете
00:05:26
эти вещи автоматически, теперь
00:05:29
я сделал здесь одну вещь, которая может показаться странной,
00:05:31
если вы привыкли работать с
00:05:33
um c-sharp from.net framework или более ранними
00:05:36
версиями dot net Five и ниже,
00:05:40
я закончил свою строку пространства имен, теперь
00:05:42
это называется пространством имен области файла,
00:05:45
и это позволяет нам вместо старого
00:05:48
способа,
00:05:49
когда мы это делали, а затем мы
00:05:51
делали отступ и имели наш класс, так что
00:05:54
это было бы
00:06:01
компонент навигации открытого класса навигации,
00:06:06
гм, вместо того, чтобы делать это,
00:06:09
я убрал эти скобки, чтобы я
00:06:13
мог вернуть отступ
00:06:15
на другой уровень, и я думаю, что это выглядит
00:06:18
намного аккуратнее,
00:06:19
поэтому у нас есть представление навигации
00:06:22
компонент,
00:06:23
но что мне нравится делать
00:06:25
в этом случае, так это то, что мне нравится наследовать компонент представления
00:06:32
теперь, если я контролирую точку на нем, он говорит: «
00:06:36
О да, используя ядро ​​Microsoft asp.net MVC»,
00:06:40
поэтому он распознает, что я также
00:06:43
гм, когда я работаю с ним. Я также
00:06:47
помещаю атрибут над ним и просто делаю
00:06:49
компонент просмотра.
00:06:53
Имя в открытых скобках равно
00:06:55
Я не знаю, почему я просто это не обязательно должно
00:06:58
быть так, в основном он воспринимает
00:07:01
это как имя, поэтому все, что находится
00:07:03
перед компонентом представления, становится имя,
00:07:08
я мог бы даже подумать, потому что я
00:07:10
унаследовал компонент вида спереди, и
00:07:12
потому что у меня есть
00:07:14
три разные вещи, которые вам не
00:07:15
нужны все, но они все равно будут работать,
00:07:17
но если бы я захотел, я бы я мог бы просто убрать
00:07:19
это и оставить это как навигацию. Я
00:07:22
мог бы оставить это,
00:07:24
и теперь он все еще будет работать, но я собираюсь
00:07:27
сделать все это. Я собираюсь назвать эту
00:07:29
навигацию, чтобы
00:07:32
имя компонента представления равнялось навигации,
00:07:34
компоненту представления навигации открытого класса,
00:07:37
а затем там это из компонента представления,
00:07:41
а затем, если мы просто перейдем сюда к
00:07:44
примеру, который мы получаем в
00:07:47
документации из скобки, а не из
00:07:49
скобки от Microsoft,
00:07:53
мы начнем, так что
00:07:57
это то, что я ищу здесь,
00:08:01
поэтому мы здесь нужен метод, называемый
00:08:04
задачей результата компонента iview. Я просматриваю
00:08:06
результат компонента, вызываю асинхронный вызов, так что здесь, упс, я не
00:08:11
знаю, почему это удалено,
00:08:19
поэтому
00:08:20
с базовым
00:08:23
компонентом представления UM
00:08:24
минимум, который мы хотим сделать, это чтобы вы
00:08:27
могли передать то, что вы видите здесь вы можете
00:08:29
передавать переменные,
00:08:31
поэтому, если мы просто сделаем синхронный метод управления точкой,
00:08:34
нам не нужно ничего исправлять, мы
00:08:38
сохраним это,
00:08:40
поэтому мы работаем с
00:08:42
компонентом представления, называемым навигацией,
00:08:44
и у него
00:08:46
есть все три разных способа
00:08:49
что вы можете определить его как компонент представления,
00:08:51
но вам не нужно делать все это сейчас, тогда
00:08:54
это вернет представление, и
00:08:57
требуемый ему обзор называется
00:08:59
по умолчанию, теперь то, что я хочу сделать, прежде чем
00:09:02
создавать это представление, которое я хочу просто попросите
00:09:05
сайт уловить это и пожаловаться
00:09:08
на это, так что да, я хочу перезапустить приложение,
00:09:12
и я хочу, чтобы сайт
00:09:16
пожаловался, тогда он не может найти это представление, поэтому
00:09:18
я собираюсь добавить его в мастер
00:09:19
вместо вызов
00:09:22
UM вместо вызова частичного представления,
00:09:24
как это было в главном шаблоне. Я
00:09:28
собираюсь заставить его вызывать его
00:09:31
оттуда, поэтому вместо этого я собираюсь
00:09:32
сделать точку компонента веса,
00:09:35
вызов асинхронного
00:09:40
и затем
00:09:41
гм
00:09:42
или просто проверьте официальные
00:09:44
документы Microsoft, вот и все,
00:09:52
затем
00:09:54
имя компонента представления, а затем
00:09:57
любые параметры, которые вы хотите передать,
00:10:00
так что это правильно, поэтому я просто сделаю такую
00:10:02
навигацию,
00:10:04
теперь он жалуется, потому что
00:10:06
он не знает об этом, о,
00:10:08
теперь все в порядке, поэтому я сказал, что хочу, чтобы он отображал
00:10:11
навигационный компонент, здесь
00:10:14
есть еще один способ, которым вы можете это сделать,
00:10:16
вы можете это сделать, вы можете вызвать это, это
00:10:18
не обязательно должно быть асинхронным он может быть
00:10:20
синхронным, так что вы можете отключить асинхронность,
00:10:23
а затем вы можете сделать
00:10:25
это из задачи
00:10:27
и просто вызвать его, чтобы
00:10:29
он не обязательно был асинхронным,
00:10:33
так что теперь я это назвал, давайте просто
00:10:35
сохраним это и посмотрим, что происходит на
00:10:36
передней части сайта, посмотрим, не упадет ли он
00:10:38
или что-то в этом роде, вот и
00:10:41
мы идем, и что он говорит, что
00:10:44
навигация по умолчанию для компонентов представления
00:10:47
не найдена,
00:10:49
поэтому он говорит нам, что он
00:10:51
ищет в папке представлений
00:10:53
и он ищет
00:10:56
стандартную навигацию по компонентам, поэтому давайте перейдем
00:11:00
сюда и сделаем это,
00:11:03
поэтому мы собираемся создать
00:11:05
папку компонентов на этом уровне
00:11:07
внутри представлений,
00:11:11
а затем мы создадим еще один
00:11:13
файл под этим
00:11:16
новым файлом,
00:11:17
а затем мы я назову этот стандартный Dot
00:11:20
cshtml,
00:11:24
а затем,
00:11:26
хм, мы можем просто поместить что угодно, поэтому я
00:11:29
просто поставлю восемь один, привет,
00:11:33
так что у него нет особенной модели, которую можно было бы
00:11:36
передать, или что-то в этом роде, но сейчас
00:11:39
это то, что мы собираемся использовать, давайте
00:11:41
обновим страницу и посмотрим, что произойдет, чтобы
00:11:44
она ее не распознала. Возможно, мне придется
00:11:47
запустить dotnet watch,
00:11:49
поэтому я собираюсь отменить это и запустить
00:11:51
снова, так что,
00:12:10
надеюсь, мы не увидим ошибку, но
00:12:13
просто убедитесь, что у нас есть правильное
00:12:14
написание файла, поэтому по умолчанию
00:12:18
правильно написано компонент. О, и этого
00:12:21
достаточно в папке компонентов, так что
00:12:23
это приведет к ошибке, и мы посмотрим, почему все
00:12:27
еще говорят, что они не могут его найти, он
00:12:29
ищет компоненты навигация
00:12:31
по умолчанию,
00:12:32
поэтому давайте поместим это в другую папку,
00:12:35
поэтому создайте папку внутри компонентов и
00:12:37
назовите ее навигацией,
00:12:41
затем переместите ее в эту папку,
00:12:45
вы уверены, что хотите ее переместить? Да, я
00:12:46
хочу,
00:12:47
теперь мы сможем перезагрузить страницу,
00:12:52
и она должна знать о это
00:12:55
так что мы увидим там большое приветствие,
00:12:57
поэтому вместо меню навигации
00:12:59
теперь у нас есть приветствие, вот как
00:13:03
мы это сделаем, так что давайте
00:13:05
посмотрим, сможем ли мы изменить его имя, чтобы
00:13:07
мы могли сделать это скопируйте это,
00:13:10
и мы могли бы вставить это туда. Я собираюсь
00:13:14
переименовать это, и я
00:13:16
попрощаюсь
00:13:21
и не спрашивайте меня, почему,
00:13:23
хм, а затем внутри этого я собираюсь попрощаться,
00:13:27
оставьте это, так что пока давайте просто перезагрузите
00:13:31
страницу и посмотрите, что произойдет,
00:13:33
поэтому по умолчанию используется привет, как нам заставить ее
00:13:37
попрощаться, ну, мы
00:13:40
можем войти в компонент представления и
00:13:41
сказать ему, какое имя у
00:13:44
компонента представления, чтобы используйте, чтобы мы
00:13:47
могли попрощаться,
00:13:53
и я думаю, нам, возможно, придется
00:13:57
сказать им об этом, так что да, строка
00:13:59
имени представления, а затем модель,
00:14:01
чтобы мы могли просто сказать ноль для модели,
00:14:05
которая может жаловаться на это, что
00:14:07
нам, возможно, придется сделать как это имя представления,
00:14:12
упс,
00:14:15
и я мог бы просто удалить его,
00:14:18
давайте просто посмотрим, как это происходит, поэтому я
00:14:20
указал, что это имя представления, а
00:14:23
не модель, на самом деле это
00:14:24
имя представления,
00:14:26
поэтому мы перезагрузим страницу, и вот мы идите,
00:14:28
мы загрузили прощальное представление, поэтому я знаю,
00:14:31
что некоторые люди предпочитают, чтобы
00:14:33
вместо того, чтобы все их частичные
00:14:36
представления все время назывались по умолчанию,
00:14:39
довольно сложно понять, что это такое
00:14:42
в этом случае, вместо того, чтобы это
00:14:44
вызывалось по умолчанию они также называют это навигацией,
00:14:46
так что это будет в компонентах
00:14:48
навигации, а затем навигации,
00:14:50
но я показываю вам здесь то, что
00:14:53
вы можете делать это разными способами, так что
00:14:55
да, если бы мы захотели,
00:14:58
вы могли бы назвать это так это, а затем вы
00:15:01
можете
00:15:02
перейти к своему стандартному переименованию
00:15:04
в навигацию,
00:15:07
а затем
00:15:09
сохранить компонент представления,
00:15:13
а затем, если мы дождемся его загрузки,
00:15:16
да, он показывает навигационный компонент, поэтому
00:15:19
мы могли бы это сделать, но я просто
00:15:20
оставлю это как по умолчанию, так что это означает, что я
00:15:23
могу удалить это,
00:15:25
и это означает, что я могу удалить
00:15:28
прощальный файл, он больше не нужен, до
00:15:30
свидания,
00:15:31
а затем переименовать навигацию в стандартную
00:15:35
точку CS HTML,
00:15:38
ну, это хорошо, и что мы
00:15:41
из этого получим, например, что мы получаем
00:15:43
больше сантехники, ну да,
00:15:45
это можно рассматривать как больше сантехники, но у
00:15:50
вас есть возможность использовать в этом то, что мы называем
00:15:52
внедрением зависимостей, так что
00:15:54
хорошо исключить логику из представлений,
00:15:57
и хорошо не делать этого
00:16:00
для этого также нужен контроллер, чтобы вы могли просто
00:16:03
вызвать его со своего взгляда здесь,
00:16:06
мы просто вызываем его здесь, чтобы
00:16:08
контроллер не был нужен, и вы
00:16:12
можете в основном передать модель на этом
00:16:14
этапе, чтобы я мог сделать
00:16:17
гм,
00:16:19
Боб равен 10.
00:16:22
вот так, а затем в моем компоненте
00:16:25
здесь я могу иметь int
00:16:29
Bob,
00:16:32
а затем в своем обзоре
00:16:35
я верну Боба,
00:16:37
а затем по умолчанию
00:16:41
я сделаю это в modelint,
00:16:49
а затем я сделаю
00:16:52
в модели,
00:16:56
теперь давайте посмотрите, так что я думаю, что
00:16:59
сделал это правильно. Я могу ошибаться здесь,
00:17:02
нет, элемент модели, переданный в
00:17:05
словарь данных представления, имеет тип
00:17:07
домашней страницы, окей,
00:17:13
позвольте мне взглянуть на документацию, которую
00:17:16
я, очевидно, сделал что-то не так,
00:17:18
я не всегда так делаю, я просто
00:17:22
придумываю это для примера здесь, поэтому я думаю, что именно
00:17:25
здесь я ошибся, просто
00:17:27
придумав что-то для примера, поэтому у
00:17:28
меня есть модель, которую я перечисляю, бла-бла-
00:17:31
бла
00:17:33
и затем смоделируйте там,
00:17:36
так что это правильно, так что
00:17:39
при вызове асинхронной навигации
00:17:46
давайте посмотрим, как они
00:17:49
ее вызывают, и там
00:17:53
написано, что все в порядке, мы идем в
00:17:56
компонент с синхронизацией боке,
00:18:00
так что это должно быть правильно, поэтому я хочу
00:18:02
просто сделать еще одно
00:18:04
перестроить Я собираюсь сделать Ctrl C
00:18:08
Я просто собираюсь запустить .net watch run
00:18:10
еще раз,
00:18:14
возможно,
00:18:16
после этого просто нужно будет перестроить,
00:18:18
потому что теоретически то, что у меня есть,
00:18:21
правильно, я сказал ему свою модель не int,
00:18:23
я сказал ему вернуть мое представление
00:18:28
и передать модель Боба,
00:18:33
и поэтому, надеюсь,
00:18:36
это не приведет к ошибке, теперь мы
00:18:40
идем, он вернул Боба, поэтому
00:18:44
параметр Боба равен 10. так что очень удобно,
00:18:47
что вы можете передать эти значения, так что, если
00:18:49
вы представляете, что у вас могут быть значения, которые
00:18:52
вы можете получить из
00:18:54
гм на Бракко, чтобы мы могли создать модель Dot,
00:18:57
а затем на домашней странице есть ли у нас
00:18:59
какие-либо свойства,
00:19:02
гм, у
00:19:05
нас есть такие свойства, как уровень, это
00:19:08
INT, я просто сохраню это,
00:19:10
а затем мы перезагружаем это,
00:19:14
вы знаете, что оно передает значение из
00:19:16
модели, чтобы вы могли это увидеть, а затем
00:19:19
вы можете передать это в свой компонент,
00:19:22
хм, но то, что мы действительно хотим передать, на самом деле, это
00:19:24
что угодно,
00:19:27
потому что, если мы просто вернемся к тему и
00:19:29
помните, в чем весь смысл этой
00:19:31
части, у нас есть навигация,
00:19:33
и эта навигация
00:19:36
заключалась в том, чтобы
00:19:37
просмотреть текущую страницу, а затем
00:19:40
получить домашнюю страницу, ну, мы можем убрать
00:19:42
эту логику отсюда, а
00:19:45
также это, а затем по сути,
00:19:50
наше представление
00:19:53
может просто заботиться об
00:19:56
элементах навигации, и ему не нужно знать о
00:19:59
домашней странице или о чем-то подобном,
00:20:01
элементы навигации — это бесчисленное множество
00:20:04
элементов навигации,
00:20:08
поэтому я говорю здесь о том, что мы могли бы
00:20:10
сделать бесчисленное множество
00:20:19
внешний элемент навигации, вот и
00:20:24
мы просто выполним управление. Dot
00:20:27
нет доступных действий с кодом,
00:20:31
поэтому он не распознает, что такое
00:20:32
элемент навигации, поэтому нам может понадобиться
00:20:34
использовать его, используя чистый сайт Dot.
00:20:41
Ну,
00:20:44
где наши модели, которые у
00:20:46
меня есть? какое-то время этого не делал, поэтому я
00:20:48
забыл, где мы храним наши модели,
00:20:52
поэтому, если я перейду к разработке настроек приложения,
00:20:57
нет, если я перейду к настройкам моделей,
00:21:00
руководство по исходному коду Builder,
00:21:03
нет определенного пространства имен, мы
00:21:06
поместили его в файл импорта представления
00:21:10
просмотр импорта, о,
00:21:14
вот он тот, который мне нужен,
00:21:23
о, я нумеруемый
00:21:25
иностранный,
00:21:27
так что да, давайте просто посмотрим, потому что
00:21:28
он уже в представлении. Импорт мне
00:21:30
не нужен, я исчисляю
00:21:32
бесчисленное множество элементов навигации, сохраните
00:21:35
это прямо сейчас, это немного счастливее, окей, гм
00:21:41
затем мы хотим вернуться к нашему частичному
00:21:44
представлению здесь
00:21:46
и вместо этой домашней страницы, а затем
00:21:48
бла-бла-бла мы собираемся скопировать их,
00:21:51
мы собираемся поместить сюда этот код,
00:21:56
модель, которую мы передаем, будет такой:
00:21:58
страница, так что я буду публиковать
00:22:06
такой контент,
00:22:08
это будет управлять точкой и получать
00:22:11
для нее пространство имен,
00:22:15
нам они больше не нужны,
00:22:18
мы можем просто изменить это для
00:22:19
контента, потому что это будет то, что будет
00:22:21
передано на
00:22:22
домашней странице мы можем просто убедиться, что у
00:22:24
нас определены опубликованные модели,
00:22:27
а затем теперь у нас есть некоторые элементы навигации,
00:22:31
и это означает, что они могут быть нулевыми,
00:22:34
поэтому, если это не то, что нам действительно следует сделать,
00:22:37
это вот так, а затем мы сделаем
00:22:38
бесчисленное количество или бесчисленное количество
00:22:41
точек пусто,
00:22:43
а затем мы просто опубликуем контент,
00:22:49
вот и пошло,
00:22:52
о нет, это должны быть элементы навигации,
00:22:56
да, вот и мы,
00:22:59
а затем вернемся к элементам навигации в представлении,
00:23:04
и тогда последнее, что мы хотим
00:23:06
сделать, это на мастере
00:23:08
в здесь вместо уровня точки модели мы
00:23:11
просто передаем модель, так что на какой бы странице
00:23:13
мы ни находились с
00:23:16
внешним
00:23:19
контентом, а затем оттуда мы
00:23:22
сможем получить домашнюю страницу, мы сможем
00:23:24
получить элементы навигации, а затем
00:23:27
вернуть их обратно в представление, а затем
00:23:30
здесь мы возьмем это,
00:23:32
мы
00:23:34
все это вырежем, поэтому скопируем все, что нам
00:23:38
не нужно, нам это действительно не нужно, я
00:23:40
собираюсь просто удалить все содержимое
00:23:42
этого в файл навигации
00:23:45
просто для эффекта, а затем сохраните здесь,
00:23:48
так что теперь
00:23:51
он жалуется, потому что у нас нет
00:23:53
достаточно справедливого URL-адреса домашней страницы. Я не думал,
00:23:56
что один из них был, я
00:23:59
хм, но вот элемент навигации, так вот
00:24:02
какая модель есть
00:24:07
модель
00:24:13
если модель ненормальная и в ней есть
00:24:15
что-то, то для каждого элемента в модели, потому что
00:24:19
это бесчисленное количество элементов навигации, вот и все,
00:24:28
теперь он жалуется здесь из-за
00:24:31
домашней страницы, поэтому мы могли бы просто схитрить и сделать
00:24:33
то,
00:24:35
что я склонен сделать или вместо того, чтобы
00:24:38
иметь модель, которая просто
00:24:40
бесчисленна, как эта, мы могли бы создать
00:24:43
другую модель,
00:24:44
так что давайте просто сделаем это,
00:24:47
поэтому в нашем
00:24:49
проекте мы хотим создать папку
00:24:52
с именем models
00:24:54
external,
00:24:56
теперь мы могли бы сделать одну, называемую моделями просмотра
00:24:59
или чем-то еще, но это хорошо, поэтому мы создадим
00:25:01
новый файл, и мы просто назовем
00:25:03
его
00:25:08
моделью представления навигации,
00:25:11
упс,
00:25:14
точка CS,
00:25:15
и в этом случае у нас будет
00:25:17
пространство имен,
00:25:19
упс, пространство имен, чистые точечные модели сайта
00:25:26
и завершите это пространство имен, тогда нам нужен
00:25:28
общедоступный
00:25:29
класс,
00:25:31
и этот называется моделью представления навигации
00:25:36
Dot, а не DOT CS, что я делаю,
00:25:40
жалуюсь по какой-то причине, о,
00:25:42
теперь он снова счастлив, поэтому мы хотим, чтобы это был
00:25:47
домашний URL-адрес общедоступной строки домашний URL-адрес
00:25:52
эээ, настраиваемся,
00:25:55
а потом нам нужна общедоступность. Я бесчисленное количество или
00:25:59
бесчисленное количество.
00:26:00
Я опубликовал о, нет, поверх элемента навигации
00:26:08
и просто вызовите этот элемент навигации, установите его,
00:26:20
да, Visual Studio форматирует вещи намного
00:26:22
проще,
00:26:24
но я все равно просто делаю это, дайте вам
00:26:26
возможность наверстайте упущенное, поместите там контрольную точку, и
00:26:30
теперь у нас есть домашний URL-адрес, и у нас есть
00:26:32
элементы навигации, и они находятся в нашей
00:26:34
модели представления навигации,
00:26:36
так что,
00:26:37
упс,
00:26:39
что мы можем сделать, это перейти в наш
00:26:41
компонент представления,
00:26:42
и на этом этапе здесь
00:26:45
мы можем сделать
00:26:48
модель VAR равной новой,
00:26:54
а затем
00:26:55
мы можем сделать такой инициализатор и
00:26:58
сказать ему, что мы хотим сделать, теперь
00:27:01
он не знает, что такое модель представления навигации,
00:27:02
поэтому нам нужно контролировать точку на нем,
00:27:05
чтобы получить что если вы не получаете все
00:27:07
эти intellisense и тому подобное, просто
00:27:08
убедитесь, что у вас установлено расширение C Sharp,
00:27:12
так что это один C Sharp от Microsoft,
00:27:17
так что здесь есть два свойства, поэтому у
00:27:19
нас есть домашний URL-адрес, равный
00:27:23
URL-адресу домашней страницы с точкой.
00:27:26
а затем там запятая, и тогда мы
00:27:28
сделаем элементы навигации
00:27:31
равными элементам навигации
00:27:35
там, где мы находимся,
00:27:37
а затем здесь, вместо того, чтобы передавать
00:27:39
элементы навигации, мы можем просто сделать
00:27:42
модель,
00:27:43
так что теперь мы можем
00:27:48
скопировать это,
00:27:49
о, я продолжаю нажимать Ctrl Shift s
00:27:53
затем мы снова можем перейти к нашему частичному представлению,
00:27:56
что сбивает с толку. Я понимаю, почему людям
00:27:58
нравится
00:27:59
называть это как-то, но вместо
00:28:02
бесчисленных элементов навигации мы можем
00:28:05
просто сказать, что модель — это модель представления навигации,
00:28:09
нам просто нужно убедиться, что у нас есть
00:28:16
используя чистые топ-модели сайта Dot,
00:28:20
тогда это будет хорошо,
00:28:22
а затем, где у нас был этот href, мы
00:28:24
можем просто сделать это по домашнему URL-адресу модели,
00:28:28
а затем, где мы это смоделировали,
00:28:30
мы можем просто вставить в современные
00:28:32
элементы навигации
00:28:35
элементы model.navigation,
00:28:38
а затем элементы точечной навигации модели,
00:28:43
о, продолжайте делать это
00:28:45
правильно, теперь должна отображаться
00:28:48
навигация, чтобы она работала так же, как и
00:28:50
раньше,
00:28:52
но мы переместили ее в компонент представления,
00:28:56
хм,
00:28:58
давайте покрутим,
00:29:00
я мог бы да, ты хочешь перезапустить да,
00:29:03
конечно, я
00:29:10
все это пересобираю, а потом мы увидим, как это
00:29:12
здесь начинает перестраивать и перезагружать
00:29:16
страницу в
00:29:24
любую минуту, так что навигация должна вернуться,
00:29:26
все должно работать, снова в
00:29:30
деле,
00:29:32
да, так что Я не думаю, что нам нужно
00:29:35
делать нижний колонтитул, вы понимаете, что мы могли бы
00:29:37
сделать это в следующем видео.
00:29:40
Я просто не хочу делать видео слишком
00:29:42
длинными, поэтому вы можете обнаружить, что я делаю
00:29:44
это отдельно и просто отправьте код
00:29:46
для этого,
00:29:47
поэтому, если вам нужен код, вы можете получить его
00:29:49
из репозитория здесь в конце
00:29:52
каждого урока. Я обновляю его и помещаю
00:29:55
теги, а с помощью тега вы можете
00:29:58
нажать на тег, и вы вы можете получить
00:30:00
исходный код
00:30:01
для этого кода, вы также можете вернуться к
00:30:06
коду здесь, и вы можете выбрать
00:30:09
теги, и вы можете получить код в
00:30:12
этой точке, и вы можете проверить,
00:30:15
так что, если вы подумали о репозитории и
00:30:17
хотите вернуться к этим тегам вы можете
00:30:18
сделать все по-разному,
00:30:20
так что да, давайте просто вернемся к главному, так что
00:30:23
да, ссылка будет
00:30:25
также в описании видео, чтобы вы могли
00:30:27
перейти к коду там,
00:30:28
если вам нравится видео,
00:30:31
пожалуйста, нажмите поставьте лайк и подпишитесь на
00:30:33
мой канал, и если вы действительно хотели сказать
00:30:35
спасибо, пока, купите, купите мне кофе, вы можете
00:30:37
сделать это здесь, зайдя на co-chair.com,
00:30:42
это ценится, когда люди это делают, но
00:30:44
этого совсем не ожидается, только если
00:30:47
вы, если вы можете себе это позволить и хотите,
00:30:49
но весь мой контент в любом случае бесплатен, так что
00:30:52
не беспокойтесь об этом,
00:30:54
но да, это просто канал для вас,
00:30:56
если вы этого хотите, и да, извините за
00:30:59
небольшой пробел, немного перерыв, но я
00:31:01
много чего делал

Описание:

In this video we start to use View Components. We learn about what they are and how we can use them in our Umbraco project. Links Code: https://github.com/prjseal/Umbraco-10-Tutorial/ View Components Documentation https://learn.microsoft.com/en-us/aspnet/core/mvc/views/view-components?view=aspnetcore-6.0 Coffee: https://www.paypal.com/donate/

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "How to build a website with Umbraco 10 - Part 15 - View Components"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "How to build a website with Umbraco 10 - Part 15 - View Components" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "How to build a website with Umbraco 10 - Part 15 - View Components"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "How to build a website with Umbraco 10 - Part 15 - View Components" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "How to build a website with Umbraco 10 - Part 15 - View Components"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "How to build a website with Umbraco 10 - Part 15 - View Components"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.