2009-07-29 7 views
2

J'ai une exigence spécifique de rendre Javascript sur une page maître d'un site asp.net. Il en existe deux exigences spécifiques:Rendu Javascript dans un master page asp.net à un endroit spécifique

1) La position - Elle doit être rendue à la toute fin de la page juste avant l'étiquette BODY 2) Contrôle - Rendu uniquement sur demande.

J'ai résolu # 2 en créant une partie Web qui rendra le javascript seulement quand il est placé sur la page. Mais je ne pouvais pas atteindre # 1 puisque la partie web ne me donne pas le contrôle sur l'endroit où rendre le javascript à l'intérieur de la balise body.

Quelqu'un at-il déjà résolu ce problème?

Veuillez nous consulter.

Merci Sachit

Répondre

1

Essayez d'utiliser ClientScript.RegisterStartupScript, il injecte à droite le script au-dessus du </body>.

+0

Cela me donne seulement le contrôle sur quand rendre .... mais pas où rendre .... Les deux sont des exigences importantes pour moi :( –

+0

@Sachit - si par "où" vous voulez dire quelles pages pour le rendre sur ... Je suggérerais d'avoir une fonction d'aide qui enregistre le script, puis appelle par programmation la fonction d'assistance sur les pages qui doivent le rendre – JustLoren

+0

en fait par où je voulais dire l'emplacement exact du script. juste au-dessus de Je pense que je peux me rapprocher de cela en utilisant ClientScript.RegisterStartupScript mais il semble que je ne peux pas contrôler l'ordre des scripts si j'en ai plusieurs ce qui pose problème car j'ai beaucoup de scripts sur cette page. –

0

RenderControl est la dernière méthode à retourner dans MasterPage Event Lifecycle que vous pouvez remplacer. Ma conjecture serait de le mettre là.

0

Si vous utilisez la page principale, alors pourquoi ne pas placer un espace réservé au contenu juste avant l'étiquette de fin de corps? Les pages de contenu doivent rendre leur JavaScript dans ce lieu particulier.

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

pages de contenu devraient rendre leur JavaScript dans le support de place footerJsContent.

Questions connexes