2008-10-29 5 views
0

J'ai modifié cette question initiale que je pense avoir limité le problème ...

J'ai une vue sur mon site qui ne me laisse pas Mettez $ document.ready dans une page master contentplaceholder. J'ai dépouillé cette page aux os nus et la seule chose qui est spécial à ce sujet est qu'il a un itinéraire personnalisé dans global.asax

routes.MapRoute("Books", 
       "{controller}/{action}/{keywords}/{pageNumber}", 
        new { controller = "Books", action = "SearchResults" } 
       ); 

Toute idée pourquoi cet itinéraire personnalisé arrêterait $ document.ready fonctionne correctement quand mis dans une zone masterpages contentplaceholder?

Répondre

5

J'ai eu le même problème et il s'est avéré que lorsque j'ai utilisé un certain chemin, il a changé la hiérarchie de fichiers perçus du site tels que le lien ../../Contenu pour le fichier .js n'a pas fonctionné plus. Je l'ai fixé en changeant mon script jquery référence à ressembler à ceci:

<script src="<%= Url.Content("~/Content/jquery-1.2.6.min.js") %>" type="text/javascript"></script> 
+0

J'ai couru dans la même chose et je fais maintenant l'habitude d'utiliser «/Contenu/... » pour toutes les références à JS et les fichiers CSS ... De cette façon, je n'ai pas besoin de m'inquiéter quand je mets à jour mes routes. –

2

Votre page maître (ou la page de vue si vous n'utilisez pas de pages maîtres) doit faire référence à jquery. Ceci est inclus dans la dernière version bêta du framework MVC.

Assurez-vous que jQuery est inclus dans le tag de votre page.

vérifier la syntaxe et ...

$(document).ready(function() { alert('loaded'); }); 

ces versions raccourcies fonctionne aussi:

$().ready(function() { alert('loaded'); }); 
$(function() { alert('loaded'); }); 
1

bâton juste quelque part dans le contrôle du contenu de votre page d'affichage dans une balise <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> 

Si vous avez des choses qui fonctionne sur chaque page, vous pouvez éplucher que loin dans un fichier .js et accéder à partir de la page principale. Mais pour les fonctions relatives à une vue spécifique, c'est probablement le moyen le plus simple et le plus facile à maintenir.

Questions connexes