2008-11-08 10 views
5

Comment avez-vous les gars manipulés travailler avec jQuery comprendmanière propre d'avoir jquery comprend avec ASP.Net MVC

<script type="text/javascript" src="jquery.js"></script> 

dans Asp.Net MVC lorsque vous travaillez avec une vue partielle contrôle/vue? Fondamentalement, je ne veux pas que le jquery soit inclus dans le master page parce que je n'utilise pas jquery dans toutes mes vues, mais je veux aussi un moyen facile pour un utilisateur de pouvoir créer le jquery include dans le droit emplacement ('tête') sans créer jquery en double comprend. Le meilleur moyen serait d'utiliser un ScriptManaager, mais je ne veux pas compter sur ASP.Net Ajax pour cela dans mon application. Existe-t-il un ScriptManager «léger» que je pourrais utiliser et qui permettrait également de lancer Intellisense pour jquery?

J'ai créé un WebControl qui fournit cette fonctionnalité, mais je ne reçois pas le support intellisense pour VS2008, ce que je voudrais vraiment.

Espérons que cela a du sens.

Répondre

13

Si vous utilisez JQuery dans un pourcentage élevé de vos pages, je le mettrais simplement dans la page maître. Il ne sera téléchargé qu'une seule fois à un moment où il est mis en cache sur le navigateur et aura un impact négligeable sur perf pour le rendu de votre page.

0

Vous pouvez toujours le faire:

faire un util.js léger qui est à chaque page, dans ce que vous pouvez mettre plusieurs choses communes, plus ceci:

function loadJSInclude(scriptPath, callback) 
{ 
    var scriptNode = document.createElement('SCRIPT'); 
    scriptNode.type = 'text/javascript'; 
    scriptNode.src = scriptPath; 

    var headNode = document.getElementsByTagName('HEAD'); 
    if (headNode[0] != null) 
     headNode[0].appendChild(scriptNode); 

    if (callback != null)  
    { 
     scriptNode.onreadystagechange = callback;    
     scriptNode.onload = callback; 
    } 
} 

Alors, à votre avis , il suffit de placer:

<script type='text/javascript'> 
    if(typeof(someJqueryObject) == "undefined")   
     loadJSInclude('jquery.js', doYourStuff);   
    else   
     doYourStuff(); 

    function doYourStuff() 
    { 
     // jQuery will be loaded now, so you can do your stuff here. 
    } 
</script> 
+1

mais vous ne trouverez rien la belle IntelliSense avec ce – Jake

3

Je ne sais pas comment faire cela avec seulement une vue partielle si vous pouvez le faire sur une base page par page avec la technologie existante.

Vous pouvez créer un ContentPlaceHolder dans votre page maître à l'intérieur de l'en-tête. Que dans vos contrôles utilisateur, mettez simplement l'inclusion jQuery dans la zone de contenu ContentPlaceHolder de vos pages.

1

Ahh essayant de poster ça me rend dingue parce que c'est traité dans le cadre de la page ... mais

<script src="<%=Url.Content("~/Content/js/jquery-1.2.3.min.js") %>" type="text/javascript"></script> 
Questions connexes