2009-07-29 2 views
2

Ich habe eine bestimmte Anforderung von Javascript auf eine Masterseite einer asp.net-Website zu rendern. Es gibt zwei spezifische Anforderungen davon:Rendern von JavaScript in einer Asp.net-Masterseite an einer bestimmten Stelle

1) Die Position - Es sollte am Ende der Seite kurz vor BODY Tag gerendert werden 2) Kontrolle - Render es nur wenn angefordert.

Ich löste # 2 durch Erstellen eines Web-Teils, der das Javascript nur dann wiedergibt, wenn es auf der Seite platziert ist. Aber ich konnte # 1 nicht erreichen, da der Webpart mir nicht die Kontrolle darüber gibt, wo das Javascript im Body-Tag gerendert werden soll.

Hat jemand dieses Problem vorher gelöst?

Bitte um Rat.

Dank Sachit

Antwort

1

mit ClientScript.RegisterStartupScript Versuchen, spritzt es das Skript direkt über dem </body> -Tag.

+0

Das gibt mir nur die Kontrolle darüber, wann zu rendern .... aber nicht wo zu rendern .... Beide sind wichtige Voraussetzungen für mich :( –

+0

@Sachit - wenn durch "wo" du meinst, welche Seiten es auf rendern ... Ich würde vorschlagen, eine Hilfsfunktion zu haben, die das Skript registriert, und dann programmatisch die Hilfsfunktion auf Seiten aufruft, die es rendern müssen .. – JustLoren

+0

eigentlich von wo ich den genauen Ort des Skripts meinte Ich brauche dieses Skript, um das zu sein knapp über Ich glaube, ich kann mit ClientScript.RegisterStartupScript näher kommen, aber es sieht so aus, als ob ich die Reihenfolge der Skripte nicht kontrollieren kann, wenn ich mehrere habe, was ein Problem ist, da ich viele Skripte auf dieser Seite habe und möchte Unten findest du diese. –

0

RenderControl ist die letzte Methode, die Sie in MasterPage Event Lifecycle zurückgeben können, die Sie überschreiben können. Meine Vermutung wäre, es dort zu machen.

0

Wenn Sie die Masterseite verwenden, legen Sie einen Inhaltsplatzhalter kurz vor dem Endbody-Tag. Die Inhaltsseiten sollten ihr JavaScript in diesem bestimmten Platzhalter darstellen.

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server">  


    <asp:ContentPlaceHolder ID="headerContent" runat="server"/> 
</head> 
<body> 
    <form id="mainForm" runat="server"> 
     <asp:ContentPlaceHolder ID="mainContent" runat="server" /> 
     <asp:ContentPlaceHolder ID="footerContent" runat="server" />  
    </form>  

    <asp:ContentPlaceHolder ID="footerJsContent" runat="server"/> 
</body> 
</html> 

Inhalt Seiten sollten ihre JavaScript in den footerJsContent Platzhalter machen.