Как включить файл CSS и файл сценариев в MVC с частичным представлением, используя Fetch API - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю над добавлением сервисного работника в мое веб-приложение MVC Asp.net. CSS-файлы и JS-файлы включаются с использованием @ Style.Render и @ Scripts.Render в _Layout.cshtml. Как я могу включить эти файлы с помощью API выборки. Я хотел бы кэшировать мои js-файлы и CSS-файлы с помощью отфильтровать запрос на выборку. Я пытаюсь это ниже код. он возвращает это сообщение об успехе. но файл не включен. Любое предложение?

<script type="text/javascript">
    fetch('/Content/Site.css')
        .then(function (response) {
            console.log('script loaded successfully');
        })
        .catch(function (ex) {
            console.log('failed', ex);
        });
</script>

1 Ответ

0 голосов
/ 17 сентября 2018

У меня нет точного ответа, но есть предположение.

Частичные представления MVC концептуально аналогичны наличию оболочки приложения (думаю, главной страницы), возможно макета, а затем содержимого страницы, котороезатем могут иметь дочерние компоненты (например, частичное представление).

Теперь MVC рендерится на клиенте, поэтому отрендеренная страница отправляется по проводам, и для создания страницы в сервисном работнике ничего не нужно....

Однако для некоторых приложений я рендерил страницы в сервис-работнике.Я опубликовал пример того, как эту технику прошлой весной для расписания PWA Philly Code Camp, которое я сделал, https://love2dev.com/blog/phillycc-service-worker/.

В основном я предварительно кэширую оболочку приложения, макет и другие основные компоненты разметки.В этом примере я получаю JSON, перехватывая запрос на HTML.Если у меня кеширован ответ HTML, я его возвращаю, если нет, то извлекаю JSON.Когда JSON отвечает, я использую его для рендеринга (я использую усы) разметки с оболочкой страницы, макетом и т. Д. В конечном итоге я рендерим разметку и кеширую ее как ответ.

Я также мог бы вернуть appShell,appShell + Layout и т. д. (при необходимости), а затем рендерится в клиентском потоке, что-то вроде SPA, только без обычной обработки хеш-обмена.Это тоже довольно легко сделать, target.innerHTML = template.render (…).

...