en utilisant la page de vue MVC + $ (document) .ready
-
05-07-2019 - |
Question
J'ai édité cette question originale car je pense avoir réduit le problème ...
Sur mon site, une seule vue ne me permet pas de placer $ document.ready dans un maître-contenu contentplaceholder. J'ai réduit cette page à l'essentiel et la seule chose qui la distingue, c'est qu'elle a un itinéraire personnalisé dans global.asax
routes.MapRoute("Books",
"{controller}/{action}/{keywords}/{pageNumber}",
new { controller = "Books", action = "SearchResults" }
);
Avez-vous une idée de la raison pour laquelle cette route personnalisée arrêterait $ document.ready de fonctionner correctement lorsqu’elle est placée dans une zone masterplace contentplaceholder?
La solution
J'ai eu le même problème et il s'est avéré que lorsque j'utilisais un certain itinéraire, la hiérarchie de fichiers perçue du site, telle que le lien ../../Content pour le fichier .js, ne fonctionnait plus. . Je l'ai corrigé en changeant ma référence de script jquery pour ressembler à ceci:
<script src="<%= Url.Content("~/Content/jquery-1.2.6.min.js") %>" type="text/javascript"></script>
Autres conseils
Votre page maître (ou la page d'affichage 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.
Vérifiez que jQuery est bien inclus dans la balise de votre page.
vérifiez également la syntaxe ...
$(document).ready(function() { alert('loaded'); });
ces versions abrégées fonctionnent également:
$().ready(function() { alert('loaded'); });
$(function() { alert('loaded'); });
Il suffit de l'insérer quelque part dans le contrôle de contenu de votre page d'affichage dans une <script ...>
balise.
<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 des éléments sont exécutés sur chaque page, vous pouvez les extraire dans un fichier .js et y accéder à partir de la page maître. Mais pour les fonctions relatives à une vue spécifique, il s’agit probablement du moyen le plus simple et facile à gérer.