Создайте частичное представление для импорта css и js asp.net core 2.2

Это вопрос относительно дизайна. В моем приложении ASP.Net Core MVC у меня есть 2 макета. Мой макет по умолчанию и мой макет администратора, название которых говорит само за себя. Я импортирую одни и те же js и css для обоих моих макетов, например. Bootstrap и jQuery и еще кое-что. Интересно, должен ли я создать частичное представление, содержащее их. Могут быть разные решения, о которых я не знаю.

Любая помощь приветствуется.

Частичное представление является наиболее подходящим инструментом для повторно используемого контента, который не требует обработки на стороне сервера (например, доступа к данным), поэтому это правильное решение для ваших требований.

Mike Brind 29.05.2019 15:36

@MikeBrind спасибо :)

Twenty 29.05.2019 20:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
1 847
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не могу сказать, было бы хорошо или нет создать партиал для обоих макетов, но я бы порекомендовал скрытый, крошечный вспомогательный тег для тега скрипта (и ссылки), который, я думаю, может быть вам полезен. Это asp-src-include.

<script asp-src-include = "/assets/js/*.js"></script>

отображается в виде html;

<script src = "/assets/js/jquery.js"></script>
<script src = "/assets/js/bootstrap.js"></script>
<script src = "/assets/js/custom.js"></script>

и та же функциональность применима и к тегу link.

Я думаю, это может немного привести в порядок ваши макеты. Вы можете найти подробные сообщения об этих помощниках тегов здесь и здесь.

Это довольно хорошая идея, но большинство сценариев я беру с CDN.

Twenty 29.05.2019 10:56
Ответ принят как подходящий

Вы можете использовать вложенные макеты для создания иерархии макетов. У меня такой же сценарий, как у вас. У меня есть _MasterLayout.cshtml в Shared с полным набором CSS и JS, который я использую для всех страниц. Затем создайте отдельный файл макета для разных разделов. Ссылайтесь на основной макет вверху, а затем включите все остальные разделы, добавив специальный код для этого макета.

Таким образом, у вас может быть MasterLayout, например:

<!DOCTYPE html>
<html>
<head>
    <meta charset = "utf-8" />
    <meta http-equiv = "content-security-policy" content = "upgrade-insecure-requests" />

    <link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous">
    <link rel = "stylesheet" href = "~/css/site.css" asp-append-version = "true" />

    @RenderSection("Styles", required: false)

    <title>@ViewData["Title"]</title>
</head>
<body>

    <div class = "container body-content">
        @RenderBody()
    </div>

    <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" crossorigin = "anonymous"</script>
    <script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity = "sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin = "anonymous"></script>
    <script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity = "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin = "anonymous"></script>
    <script src = "~/js/site.js" asp-append-version = "true"></script>

    @RenderSection("Scripts", required: false)
</body>
</html>

И отдельный вложенный макет, например следующий:

@{
    Layout = "_MasterLayout";
}
@RenderSection("Styles", required: false)

<nav class = "navbar navbar-expand-md navbar-dark fixed-top bg-dark"> 
   // custom navbar for anonymous users
</nav>

<div class = "container body-content">
    @RenderBody()
</div>

@section Scripts {
    @RenderSection("Scripts", required: false)
}

Документации по вложенным макетам не так много. Вот еще один статья, который я нашел, описывающий подход.

Не могли бы вы случайно поделиться и своим _MasterLayout?

Twenty 30.05.2019 12:58

Добавлена ​​упрощенная версия того, что мы используем.

Brad Patton 30.05.2019 15:43

Почему @RenderSection по-прежнему нужен во вложенном макете и почему @section Script отмечены только скрипты, но не стили?

Twenty 31.05.2019 12:52

Я не уверен, что они все еще нужны, просто делитесь работами для меня прямо сейчас. Не стесняйтесь попробовать это без них. Главное, я думаю, что это предпочтительный способ иметь несколько макетов. Частичные представления тоже могут работать, я не знаю, но мне нравится иметь центральное расположение для всех js/css.

Brad Patton 31.05.2019 16:44

Другие вопросы по теме