2009-06-15 8 views
1

Ich habe eine Reihe von Seiten erben von einer Masteransicht. Auf einer dieser Seiten möchte ich ein populäres jQuery Plugin namens "Uploadify" verwenden.Wo sollte ich eine JavaScript-Referenz für eine Ansicht einfügen, die aus einer Masteransicht in ASP.NET MVC ineriert?

Wo sollte ich die Referenz für die Uploadify-Javascript-Datei platzieren? Ich brauche es nur auf einer kleinen Seite, also schien es nicht richtig, es in Master-Ansicht zu platzieren. Ist es "OK", es in das Inhalts-Tag meiner geerbten Ansicht zu platzieren, die dieses Plugin verwendet?

Antwort

6

Der beste Weg, ich weiß, dies zu tun, ist ein ContentPlaceHolder im <head> Abschnitt der MasterPage, hinzufügen und die <script>-Tags zu einem Content Referenzierung dieses Abschnitts auf allen Seiten, die zusätzlichen Javascripts benötigen (oder stylehseets, oder was auch immer hinzufügen. .. Es fügt sicherlich einen zusätzlichen Grad an Freiheit hinzu). In Sie

meistern:

<head> 
    <!-- Sitewide script references, title tags etc goes here --> 

    <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head> 

Wie es standardmäßig leer ist, müssen Sie nichts in irgendwelchen anderen Seiten ändern, diese Änderung zu Ihrem Master zu machen.

In Ihrer Seite, die das zusätzliche js Skript muss:

<asp:Content ID="HeadContentFromPage" ContentPlaceHolderId="HeadContent"> 
    <script type="text/javascript" src="myPageSpecificScript.js"></script> 
</asp:Content> 
+0

Einverstanden, aber ich würde es ganz unten über dem Endkörper-Tag setzen. – Charlino

+0

Falls er jQuery $ (Dokument) verwendet .ready (function() {...}); es ist nicht wirklich wichtig - der Code wird nicht ausgeführt, bis das DOM trotzdem geladen hat. –

0

Setzen Sie ein ScriptManager Kontrolle auf der Masterseite und umfassen die üblicherweise verwendeten JS-Dateien gibt:

<asp:ScriptManager ID="ScriptManager1" runat="server" > 
    <Scripts> 
    <asp:ScriptReference Path="Common.js" /> 
    </Scripts> 
</asp:ScriptManager> 

Setzen Sie ein ScriptManagerProxy Kontrolle auf Ihre Inhaltsseiten (oder auf allen Benutzersteuerelementen) und die spezifischen JS-Dateien dort einschließen:

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server" > 
    <Scripts> 
    <asp:ScriptReference Path="Specific.js" /> 
    </Scripts> 
</asp:ScriptManagerProxy> 

EDIT: Ich bin mir nicht sicher, ob dies auch mit ASP.NET MVC funktioniert.

+1

Dies ist nicht der Fall, da es kein

-Tag in einer ASP.Net-Seite (oder masterpage) gibt. –

+0

@Tomas: Danke für den Kommentar, gut zu wissen! – M4N

0

Sie könnten einen Inhaltsblock in den Teil Ihrer Masterseite einfügen. Das würde den Verweis auf Ihre js-Datei im Dokumentkopf und außerhalb des Dokumentkörpers behalten.

Wenn Sie statisches Dokument-Caching verwenden, spielt es wahrscheinlich keine Rolle, ob Sie das Dokument in Ihre Masterseite oder in die Ansicht einfügen, insbesondere wenn die meisten Benutzer schließlich ein Dokument hochladen. Obwohl dieser Ansatz die erste Seite möglicherweise etwas langsamer lädt.