2009-04-04 7 views

Répondre

2

J'ai mis en place un ContentPlaceHolder dans l'en-tête de la page maître pour la vue. Dans la vue, j'inclus à la fois l'en-tête et le contenu du corps et ajouter mon javascript inclus dans le lieu correspondant à l'en-tête. Je n'ajoute généralement pas l'include javascript à la vue partielle car je veux (aussi) qu'elle apparaisse dans l'élément head html. Je m'assure juste d'inclure tous les fichiers javascript dont tous mes partiels auront besoin dans la vue qui les inclut. Je vais souvent inclure un script en ligne dans la vue partielle même si vous devez faire attention à cela si le partiel peut être intégré plusieurs fois.

Afficher le code:

<asp:ContentPlaceHolder ID="headerContent" 
         ContentPlaceHolderID="Header" 
         runat="server"> 
    ... javascript includes go here... 
</asp:ContentPlaceHolder> 

<asp:ContentPlaceHolder ID="bodyContent" 
         ContentPlaceHolderID="Body" 
         runat="server"> 
    ... body content goes here... 

    <% Html.RenderPartial("PartialView1", Model, ViewData); %> 
    <% Html.RenderPartial("PartialView2", Model, ViewData); %> 
</asp:ContentPlaceHolder> 
+0

Que se passe-t-il lorsque, dans une requête Ajax, seule la vue partielle est rendue à nouveau? Dans mon cas, le javascript en ligne qui nécessite le fichier javascript référencé arrête de fonctionner. J'ai aussi essayé de le référencer à l'intérieur de la vue partielle mais sans succès! Avez-vous une idée sur la façon de faire cela? –

+1

Vous pouvez utiliser les gestionnaires live() pour vos événements. Les gestionnaires actifs sont ajoutés au niveau du document afin qu'ils ne soient pas supprimés lorsque les éléments correspondants sont remplacés dans le DOM. Vous pouvez également les ajouter à nouveau en utilisant les rappels complets/succès que vous pouvez enregistrer dans AjaxOptions. – tvanfosson

+0

J'ai créé une fonction: function functionName (expéditeur, args) { } et sur le rappel OnComplete je l'appelle (OnComplete = "functionName"). Le problème est que la requête n'est plus une requête Ajax. Pourquoi? Dois-je faire autre chose? J'ai aussi essayé d'enregistrer un script de démarrage comme ceci: string script = "

Questions connexes