Не удается загрузить скрипт в ViewComponent - PullRequest
0 голосов
/ 06 сентября 2018

Я создал ViewComponent, который отображает Table, который требует некоторого плагина для включения определенных функций. Внутри ViewComponent я пытался создать определенный раздел:

@section DataTableScripts{
   <script src="~/js/JQuery/jquery.dataTables.js"></script>
} 

к сожалению, я обнаружил, что ViewComponent не может загрузить @section.

Поэтому я попытался включить сценарий непосредственно в ViewComponent, но проблема в том, что сценарии загружаются до JQuery, который загружается внутри _Layout, а именно:

ViewComponent

<script src="~/js/JQuery/jquery.dataTables.js"></script>
<script src="~/js/JQuery/dataTables.buttons.min.js"></script>
<script src="~/js/JQuery/dataTables.keyTable.min.js"></script>
<script src="~/js/JQuery/dataTables.responsive.min.js"></script>
<script src="~/js/JQuery/dataTables.select.min.js"></script>
<script src="~/js/JQuery/dataTables.bootstrap4.js"></script>
<script src="~/js/JQuery/jquery.dataTables.js"></script>

Компоновка

<script src="~/js/jquery.min.js"></script> 

так что в этом случае я получу:

jQuery не определен

Как мне справиться с этой ситуацией?

Ответы [ 2 ]

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

Просто установите Layout для своего ViewComponent.

@{
    Layout = "/Views/Shared/_Layout.cshtml";
}


@section DataTableScripts{
    <div>It works </div>
    <script src="~/js/JQuery/jquery.dataTables.js"></script>
} 

Вот скриншот, который работает:

enter image description here

[Изменить]

Этот подход не кажется хорошим способом сделать это. Как говорит @ Кирк Ларкин , это сделает рендеринг Layout дважды. Другой патч - написать новый RefinedLayout.cshtml и установить Layout из ViewComponent как RefinedLayout:

@{
    Layout = "_RefinedLayout.cshtml";
}

@section DataTableScripts{
    <div>It works </div>
    <script src="~/js/JQuery/jquery.dataTables.js"></script>
} 

Для получения дополнительной информации см. Временное решение MortenMeisler

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

Вы используете <script src="~/js/JQuery/jquery.dataTables.js"></script> дважды. Просто держи его один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...