Javascript не работает в частичном представлении

эта проблема похожа на то что описано в выполнить Javascript внутри частичного представления в ASP.NET MVC

приведенный ниже фрагмент кода в индексе.cshtml работает нормально...


<label for="locationOfSearch"> in :</label> @Html.TextBox("locationOfSearch")

<input type="submit" value="Search"  style="background-color:Green"/>

@section JavaScript {
    <script type="text/javascript">
        $(document).ready(function () {


            $("#locationOfSearch").autocomplete({
                source: '@Url.Action("AutocompleteAsyncLocations")'
            })



        });
    </script>
}

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

пожалуйста, дайте мне знать, как я могу решить это без много изменений...

2 ответов


нельзя использовать разделы в частичных представлениях. Они просто не работают. Поэтому вам придется сохранить @section JavaScript в представлении, чтобы зарегистрировать скрипты, а затем отобразить частичное, которое будет содержать только разметку. Вы также можете написать пользовательские вспомогательные методы для достижения этого, как показано в ответ.


Как я знаю, частичное представление должно иметь ссылку на все скрипты, даже если вы уже ссылаетесь на него на странице master/layout. Я всегда создавал частичное представление (_Scripts.cshtml) и поместить в него все скрипты + ссылку на таблицу стилей. Затем я буду называть это частичное представление в каждом представлении:

 @Html.Partial("_Scripts")

надеюсь, что это то, что вы хотите, спасибо :)