2008-11-08 6 views
5

Wie Sie Jungs haben behandelt die Arbeit mit jQuerysaubere Art und Weise jquery des Habens enthält mit ASP.Net MVC

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

in Asp.Net MVC enthält, wenn sie mit Teilansichten/view Kontrollen zu arbeiten? Grundsätzlich möchte ich die JQuery nicht in die Masterseite aufnehmen, da ich jQuery nicht in allen meinen Ansichten verwende, sondern auch eine einfache Möglichkeit für ein Benutzersteuerelement, das jQuery-Include rechts erstellen zu können Location ('Kopf') ohne doppelte jquery-Include zu erstellen.

Der beste Weg wäre, einen ScriptManaager zu verwenden, aber ich möchte in meiner Anwendung nicht auf ASP.Net Ajax zurückgreifen. Gibt es einen "leichten" ScriptManager, den ich verwenden könnte, der auch das neu veröffentlichte intellisense für jquery erlauben würde?

Ich habe ein WebControl erstellt, das diese Funktionalität bietet, aber ich bekomme nicht die Intellisense-Unterstützung für VS2008, die ich wirklich gerne hätte.

Hope das macht Sinn.

Antwort

13

Wenn Sie JQuery in einem hohen Prozentsatz Ihrer Seiten verwenden, würde ich es einfach in die Masterseite einfügen. Es wird nur einmal heruntergeladen, zu diesem Zeitpunkt wird es im Browser zwischengespeichert und hat nur einen geringen Einfluss auf die Leistung von Perf zum Rendern Ihrer Seite.

0

Man könnte dies immer tun:

ein leichtes util.js machen, die auf jeder Seite ist, darin kann man verschiedene übliche Zeug gelegt, und diese:

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

Dann Ihrer Ansicht nach , nur setzen:

<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

aber man wird nicht das schöne intellisense mit diesem erhalten – Jake

3

nicht sicher, wie dies mit nur Teilansichten zu tun, wenn Sie es auf einer Seite-an-Seite-Basis mit dem vorhandenen Technologie tun könnten.

Sie könnten einen ContentPlaceHolder auf Ihrer Masterseite innerhalb des head -Tags erstellen. Fügen Sie dann in Ihren Benutzersteuerelementen das jQuery-Include einfach in den ContentPlaceHolder-Inhaltsbereich Ihrer Seiten ein.

1

Ahh versucht, dies zu schreiben treibt mich Nüsse denn es ist als Teil der Seite behandelt wird ... aber

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