MVCビューページ+ $(document).readyを使用
-
05-07-2019 - |
質問
問題を絞り込んだと思うので、この元の質問を編集しています...
私のサイトには、マスターページのコンテンツプレースホルダー内に$ document.readyを配置できないビューが1つあります。このページを剥ぎ取りましたが、特別なことはglobal.asaxにカスタムルートがあることです
routes.MapRoute("Books",
"{controller}/{action}/{keywords}/{pageNumber}",
new { controller = "Books", action = "SearchResults" }
);
このカスタムルートがmasterpages contentplaceholderゾーンに配置されたときに$ document.readyが正しく機能しなくなる理由は何ですか?
解決
同じ問題があり、特定のルートを使用すると、.jsファイルの../../Contentリンクなどのサイトの認識されたファイル階層が変更されたことが判明しました。 jqueryスクリプト参照を次のように変更して修正しました。
<script src="<%= Url.Content("~/Content/jquery-1.2.6.min.js") %>" type="text/javascript"></script>
他のヒント
マスターページ(またはマスターページを使用していない場合はビューページ)は、jqueryを参照する必要があります。これは、MVCフレームワークの最新のベータリリースに含まれています。
ページのタグにjQueryが含まれていることを確認してください。
構文も確認してください...
$(document).ready(function() { alert('loaded'); });
これらの短縮バージョンも機能します:
$().ready(function() { alert('loaded'); });
$(function() { alert('loaded'); });
ビューページのコンテンツコントロール内の<script ...>
タグ内のどこかに貼り付けてください。
<asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
<div class="contentItem">
<%!-- yadda --%>
</div>
<script type="text/javascript">
$(document).ready(function() {
// do your worst
});
</script>
</asp:Content>
すべてのページで実行されるものがある場合、それを.jsファイルに剥がして、マスターページからアクセスできます。ただし、特定のビューに関連する関数の場合、これはおそらく最も簡単な方法であり、保守が最も簡単です。
所属していません StackOverflow