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

Эта проблема аналогична описанной в Выполнение Javascript внутри частичного представления в ASP.NET MVC

Ниже фрагмент кода в index.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>
}

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

Пожалуйста, дайте мне знать, как я решаю это без особых изменений...

Ответ 1

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

Ответ 2

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

 @Html.Partial("_Scripts")

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