Skip to content

Створення Sitemap.xml для веб додатка Asp.net Core 7

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Завантаження...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


Розглянемо механізм створення карти сайту. Навряд чи тут можна запропонувати якесь універсальне рішення, все залежить безпосередньо від веб-додатка, від того, як у ньому влаштовано систему маршрутів і посилань, але в принципі можна певною мірою автоматизувати процес створення файлу sitemap.xml.

Для прикладу, створимо простий проект ASP.NET Core Web Application (Веб-додаток ASP.NET Core), який буде отримувати товари з бази даних і міститиме 4 основні дії. Я очікую від вас мінімальні знання концепцій Entity Framework Core, тому в деяких місцях, вдаватися в подробиці не стану.

Генерація sitemap.xml

Конфігурування підключення

Модель і Репозиторій

Конфігурування постачальника бази даних і класу контексту

Добавление контроллера и представления

Створення класу генератора карти

Використання власних маршрутів

Виклад матеріалу в статті буде вестися прискореними темпами, оскільки більша частина роботи стосується генерації sitemap.xml з використанням ASP.NET Core МVС поверх фундаменту, сформованого за допомогою інфраструктури Entity Fгamework Core.

Конфігурування підключення

Для початку завантажимо бібліотеку Entity Framework Core Sql Server:

Перейдемо у файл appsettings.json і пропишемо конфігурацію підключення та логування:

У забезпеченні доступу до даних у БД інфраструктура Entity Framework Core покладається на клас контексту БД. Щоб забезпечити приклад додатка контекстом, додайте в папку Data файл класу на ім’я ApplicationContext.cs з таким кодом:

Модель і Репозиторій

Модель для додатка GameStore буде заснована на списку товарів. Створіть папку Models і додайте в неї файл класу на ім’я Product.cs з таким вмістом:

Мені подобається забезпечувати узгоджений доступ до даних у застосунку з використанням патерну “Сховище” (Repository), у якому інтерфейс визначає властивості та методи, призначені для доступу до даних, а для роботи з механізмом зберігання даних застосовується клас реалізації. Перевага використання патерну “Сховище” пов’язана з полегшенням модульного тестування частини MVC додатка, а також із тим, що деталі, які стосуються зберігання даних, приховані від інших частин додатка.

Щоб створити інтерфейс сховища, створіть папку Interfaces і додайте в неї файл інтерфейсу на ім’я IProduct.cs із таким вмістом:

Створіть папку Repository і додайте в неї файл класу на ім’я ProductRepository.cs з таким вмістом:

У додатку ASP.NET Core MVC, доступ до об’єктів контексту даних управляється з використанням впровадження залежностей, і тому до класу ProductRepository було додано конструктор, який приймає об’єкт ApplicationContext, який буде надано засобом впровадження залежностей під час виконання.

Конфігурування постачальника бази даних і класу контексту

Додайте в клас Program.cs оператори конфігурації, щоб повідомити інфраструктуру Entity Framework Core про те, яким чином використовувати рядок підключення, який має застосовувати постачальник БД, і як керувати класом контексту:

Для простоти прикладу, створення бази даних відбуватиметься без міграцій. Про створення і наповнення бази даних подбає клас контексту ApplicationContext.

Додавання контролера та подання

Змінимо контролер HomeController, додамо такий вміст:

Тут у нас чотири методи, крім того, варто зазначити, що метод Product отримує елементи з бд за ID. Таким чином, у базі даних ще можуть зберігатися безліч елементів, для кожного з яких має формуватися свій шлях типу:

https://localhost:7062/home/product?productId=fe438b5a-dad7-4999-8bc7-2d3d7181ac8a

Створення класу генератора карти

Тепер додамо в проєкт новий клас MapGenerator, який генеруватиме файл sitemap.xml:

Для спрощення створення посилання за маршрутом і його параметрами тут визначено метод розширення AbsoluteRouteUrl, який приймає назву маршруту і його параметри.

Метод GetSitemapNodes() класу MapGenerator генерує всі посилання за методами контролера. Для отримання всіх id товарів із бази даних застосовується допоміжний сервіс, який дістає їх із таблиці Products.

У класі Program.cs додамо сервіс:

У HomeController, отримаємо його:

Тепер додамо в HomeController метод, який віддаватиме згенеровану карту сайту:

І тепер при зверненні шляхом https://localhost:XXXX/sitemap.xml ми отримаємо згенеровану карту:

asp.net core sitemap

Использование собственных маршрутов

Фреймворк MVC дає змогу використовувати в додатку маршрутизацію на основі атрибутів. Ми можемо вказати власні маршрути для кожної дії нашого контролера, як ми зробили до цього для дії SitemapXml().

Якщо поглянути на карту сайту, поточний шлях отримання продукту виглядає не дуже, давайте визначимо власний маршрут для отримання товару:

Тепер, крім стандартного маршруту, необхідно визначити свій, для цього в класі Program.cs додамо такий рядок:

У класі MapGenerator, змінимо реалізацію методу GetSitemapNodes:

Перейдемо шляхом https://localhost:XXXX/sitemap.xml і отримаємо згенеровану карту з новими маршрутами:

generate sitemap xml asp.net core mvc

На цьому стаття “Створення Sitemap.xml для веб додатка Asp.net Core 7”, підійшла до кінця, сподіваюся вам було цікаво. Ви можете завантажити вихідний код у моєму репозиторії — Github.

Поділіться вашим досвідом у коментарях, як ви генеруєте sitemap.xml в Asp.Net Core або інших типах проектів?

Так само вам може бути цікава попередня стаття:

Checkbox List в Asp.net Core Mvc


Ви хочете навчитися писати код мовою програмування C#?

Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.

Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:

  • Доступ до пройденого матеріалу
  • Тематичні статті
  • Бібліотека книг
  • Онлайн тестування
  • Спілкування в закритих групах

https://dijix.com.ua

Живи у своєму світі, програмуй у нашому.

Published inAsp.Net CoreМаркетинг і Seo
Subscribe
Notify of
guest
0 комментариев
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x