9

Sto lavorando a un progetto ASP.net 4, MVC4 (RC) utilizzando lo studio visivo 11. Sto cercando di visualizzare una vista Razor MVC4 che restituisce una vista parziale. Ho alcuni javascript richiesti per la mia vista parziale. Nella mia vista parziale quando includo il mio javascript all'interno della sezione degli script come segue non sembra caricarsi.MVC4 vista parziale pacchetto javascript Edizione

@section Scripts { 
    <script type="text/javascript"> 
     $(function() { 
      alert("test"); 
     }); 
    </script> 
} 

Se rimuovo la sezione script non riesce, come le librerie jQuery (che sono in bundle e resi sulla mia pagina _Layout.cshtml) non hanno ancora caricata quando il codice viene eseguito pronto documento.

<script type="text/javascript"> 
    $(function() { 
     alert("test"); 
    }); 
</script> 

codice _Layout pagina di caricare le librerie jQuery

@Scripts.Render("~/bundles/jquery") 
@RenderSection("scripts", required: false) 

Qualcuno sa di una soluzione per questo, o sono semplicemente andando su di esso nel modo sbagliato? Mi sta distruggendo la testa !!

risposta

10

Non avvolgere lo script in un document.ready nel parziale:

@section Scripts { 
    <script type="text/javascript"> 
     alert("test"); 
    </script> 
} 

Ah, e non mettere in script parziali. Il codice Javascript deve essere inserito in file javascript separati. Se vuoi eseguire qualche javascript quando viene caricato un partial, devi semplicemente esternalizzare questo script in una funzione/plugin riutilizzabile che chiami una volta caricato il tuo partial.

+0

Grazie per la risposta ma non ha funzionato per me. Anche con la rimozione del documento. Già quando guardo il sorgente della pagina il javascript è completamente mancante. Se sposto il javascript nella sua vista genitore (che non è una vista parziale) viene caricato. Ma ne ho bisogno sul carico della vista paritaria. – martin

+0

Finalmente ha funzionato. Quando ho creato la pagina con gli script – martin

+3

È molto divertente che tu abbia trovato il problema di @martin e ha contrassegnato la sua risposta anche se la soluzione era la soluzione giusta. : D – Samuel

4

Finalmente ha funzionato. Ho rimosso il mio javascript dalla mia vista parziale e l'ho inserito nella vista genitore (che non è parziale), nella sezione script. Questa sezione degli script è stata creata automaticamente durante la creazione della vista con scaffolding (Crea) ed è stata collocata alla fine del pagina. Per farlo funzionare ho dovuto spostarlo in cima alla pagina - prima della chiamata per rendere il mio parziale.

2

ClientDependency risolve esattamente questo problema e consente di aggiungere riferimenti di script a viste parziali che vengono arrotolate e posizionate alla fine della pagina (o dovunque specificate) per voi. Si occupa anche di raggruppamento, versioning e minimizzazione pagina per pagina.

Il sovraccarico di assicurare che il riferimento allo script sia sulla vista "principale" piuttosto che sul parziale non mi infastidisce, ma la dipendenza del client potrebbe essere utile se si avessero carichi di parziali che richiedono tutti il ​​proprio script e CSS.

+0

Ecco un metodo di estensione più semplice e più semplice che risolve il problema specifico degli script in partial: http://blog.logrythmik.com/post/A-Script-Block-Templated-Delegate-for-Inline-Scripts-in-Razor-Partials – peter3

Problemi correlati