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")
Надеюсь, это то, что вы хотите, спасибо:)