Страницы ASP.NET Core 8.0 Razor: перезапись _Layout.cshtml.css => {application}.styles.css не найдено (404)

После создания нового проекта .NET8.0 Razor Pages (ASP.NET Core) я удалил библиотеки JQuery и Bootstrap. Затем я отредактировал _Layout.cshtml.css. При запуске проекта мои CSS-правила не применяются, поскольку мой браузер не может загрузить таблицу стилей. В результате браузер получает ошибку 404 при запросе {application}.styles.css.

Кто-нибудь знает, в чем проблема?

_Layout.cshtml и _Layout.cshtml.css выглядят следующим образом:

:root {

}

@font-face {
    font-family: "Inter";
    src: url(/fonts/Inter/Inter-VariableFont_slnt\,wght.ttf);
}

@font-face {
    font-family: "Cutive Mono";
    src: url(/fonts/Cutive_Mono/CutiveMono-Regular.ttf);
}

html {
    font-family: Inter;
    box-sizing: border-box;
}

body {
    height: 100vh;
    width: 100vw;
    margin: 0;
    display: grid;
    grid-template-rows: 4.4rem 1fr 1.5rem;
}

header {
    display: grid;
    grid-template-rows: 1fr 1.5rem;
}

.main-header {
    background-color: blue;
}

.main-nav {
    background-color: black;
    color: white;
    display: flex;
    align-items: center;
}

.main-nav-item {
    margin-left: 0.2rem;
    color: inherit;
    text-decoration: inherit;
}
<!DOCTYPE html>
<html lang = "de-de">
<head>
    <meta charset = "utf-8" />
    <meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"]</title>
    <link rel = "stylesheet" href = "~/css/site.css" asp-append-version = "true" />
    <link rel = "stylesheet" href = "~/{application}.styles.css" asp-append-version = "true" />
</head>
<body>
    <header>
        <div class = "main-header"></div>
        <nav class = "main-nav">
            <a href = "#" class = "main-nav-item">Link 1</a>
            <a href = "#" class = "main-nav-item">Link 2</a>
        </nav>
    </header>

    <main>
        @RenderBody()
    </main>

    <footer>
    </footer>

    <script src = "~/js/site.js" asp-append-version = "true"></script>

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

wwwroot выглядит так:

где твой {application}.styles.css? он существует в папке wwwroot?

Tiny Wang 07.05.2024 05:16

Я обнаружил, что этот файл создается во время сборки путем сбора и изменения нескольких .css-файлов (каждый из которых привязан к странице бритвы по соглашению об именах) (= изоляция CSS). В моем случае он, похоже, не генерируется, и причина пока не найдена...

Flipps 07.05.2024 13:20
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
167
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я создал новое приложение MVC на своей стороне и, как и вы, удалил из проекта библиотеки начальной загрузки и jquery, а затем прокомментировал ссылку на эти библиотеки в _Layout.cshtml. Затем я создал Index.cshtml.css и использовал его в своем Index.cshtml, у меня это сработало.

Я также проверяю комментарий <link rel = "stylesheet" href = "~/WebApplication2.styles.css" asp-append-version = "true" />, тогда мой собственный стиль не будет использоваться, но поскольку он не ссылается на ApplicationName.stype.css, чтобы я не получил ошибку 404. То же самое и в новом веб-приложении .net 8 razor. Боюсь, вы могли бы очистить и пересобрать свое приложение, а также проверить, есть ли у вас <link rel = "stylesheet" href = "~/WebApplication2.styles.css" asp-append-version = "true" /> в вашем _layout.cshtml.

Если это не поможет решить вашу проблему, не могли бы вы поделиться минимальным образцом для воспроизведения проблемы?

Tiny Wang 08.05.2024 08:15

Я нашел проблему, как описано в моем ответе. Спасибо, в любом случае!

Flipps 14.05.2024 13:05
Ответ принят как подходящий

Я нашел проблему:

При создании проекта My Project.csproj создается пространство имен My_Project (с подчеркиванием). Я использовал пространство имен для пути к файлу:

<link rel = "stylesheet" href = "~/My_Project.styles.css" />

Но мне пришлось использовать фактическое имя проекта (без подчеркивания):

<link rel = "stylesheet" href = "~/My Project.styles.css" />

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