web-dev-qa-db-ja.com

パーシャルビューでJavascriptが機能しない

この問題は、 ASP.NET MVCの部分ビュー内でJavascriptを実行する で説明されているものと似ています。

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>
}

しかし、上記のコードとそれぞれのスクリプトファイルをコピーして別のビューに貼り付け、Html.Partial(新しいビュー名)を呼び出すとindex.cshtmlに貼り付けると、オートコンプリートが機能しません...

あまり変更せずに解決する方法を教えてください...

13

部分ビューでセクションを使用することはできません。それらは単に機能しません。したがって、スクリプトを登録し、マークアップのみを含むパーシャルをレンダリングするには、ビューに@section JavaScriptを保持する必要があります。 この回答 に示すように、これを実現するカスタムヘルパーメソッドを作成することもできます。

26
Darin Dimitrov

私が知っているように、部分ビューには、マスター/レイアウトページで既に参照している場合でも、すべてのスクリプトの参照が必要です。私がいつも行ったことは、部分ビュー(_Scripts.cshtml)を作成し、その中にすべてのスクリプトとスタイルシート参照を配置することです。次に、この部分ビューをすべてのビューで呼び出します。

 @Html.Partial("_Scripts")

これがあなたが望むものであることを願っています、ありがとう:)

2
shennyL