Javascript не работает в частичном представлении - PullRequest
13 голосов
/ 29 октября 2011

Эта проблема похожа на описанную в Выполнение 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>
}

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

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

Ответы [ 2 ]

26 голосов
/ 30 октября 2011

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

2 голосов
/ 30 октября 2011

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

 @Html.Partial("_Scripts")

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

...