Частичный просмотр не распознает файл Javascript, который включается в родительский

#javascript #asp.net-core-mvc #asp.net-mvc-partialview

#javascript #asp.net-core-mvc #asp.net-mvc-partialview

Вопрос:

Я использую asp .net core 3, я добавляю несколько частичных файлов через javascript

 function AddBill(type)
        { tag = "....."; // some div and a tags
                $.get('/Glasses/DisplayFarBill?index='   farIndex,
                            function (partial) {
                                $('#FarSightedBillsSection').append(tag);
                                $('#farSighted'   farIndex).append(partial);
                                $('#farSighted'   farIndex).collapse('show');
                                farIndex  ;
                            });
}
  

на главной странице я включаю некоторые js файлы, с которыми работают некоторые элементы частичного просмотра :

 <link rel="stylesheet" href="~/lib/md.bootstrappersiandatetimepicker/dist/jquery.md.bootstrap.datetimepicker.style.css" />
<script src="~/lib/md.bootstrappersiandatetimepicker/dist/jquery.md.bootstrap.datetimepicker.js" type="text/javascript"></script>
  

но когда я добавляю частичный просмотр с помощью javascript, он не распознает этот файл js, но когда я добавляю этот частичный просмотр с помощью кода (я имею в виду частичный тег), он распознает его

Я не хочу включать его в Partial, потому что у меня есть несколько экземпляров partial.

Ответ №1:

Вот демо-версия, которая работала:

Контроллер:

 public IActionResult GetPartial()
        {
            return PartialView("_Partial");
        }
        public IActionResult TestPartial()
        {
            return View();
        }
  

_Partial (частичный просмотр):

 <input type="text" data-provider="datepicker" class="datepicker" style="width:200px;" />
  

TestPartial (главная страница):

 <h1>TestPartial</h1>
<div id="items">

</div>

    @section Scripts{
    
        <link rel="stylesheet" href="~/lib/DatetimePicker/dist/datetimepicker.css" />
        <script src="~/lib/DatetimePicker/dist/datatimepicker.js"></script>
       
        <script type="text/javascript">
            $(function () {
                getPartial();
            })
            function getPartial() {
                $.ajax({
    
                    url: '/Test/GetPartial',
                    dataType: 'html',
                    success: function (newItem) {
                        $(newItem).appendTo($('#items'));
                        $('.datepicker').MdPersianDateTimePicker({
                            dateFormat: 'yyyy-MM-dd',
                            isGregorian: false,
                            enableTimePicker: true
                        });
                    }
                })
    
            }
    
        </script>
    }
  

Результат:
введите описание изображения здесь

Если вы не можете его распознать, вы можете попробовать использовать F12, чтобы проверить Console , есть ли у вас какая-либо ошибка в консоли?И проверьте Network , равен ли статус css и js 200? введите описание изображения здесь
введите описание изображения здесь

вы можете поместить css и js в _Layout.cshtml следующим образом: введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. статус 304, и в консоли у него ошибка: ‘$ (…).MdPersianDateTimePicker не является функцией’. когда я включаю этот файл js для ‘MdPersianDateTimePicker’ в частичный, у меня нет ошибки

2. Итак, вы добавляете ` $(‘…’).MdPersianDateTimePicker` на главной странице? Я получаю css и js в github и datetimerpicker css, статус js равен 304, другой статус равен 200. И это может сработать. Если вы все еще не можете работать, вы можете попробовать поместить css и js в _Layout.cshtml в общую папку, как показано в моем ответе.

3. Я использовал section script, как вы сказали в вашем примере, и это сработало, спасибо, статус по-прежнему равен 304, но он работает.

4. Нужен другой способ. Это родительский просмотр для вызова javascript частичного просмотра. Он говорит, что функция не определена. Как это сделать