2009-09-18 27 views
5

Io uso questo codice JavaScript all'interno del tag head per popolare i div con un pulsante browse in modo che gli utenti possano caricare le immagini (swfupload).Esegui Javascript all'interno di una vista parziale in ASP.NET MVC

<head> 
... 
<script type="text/javascript"> 
    var swfu = function() { 
     return new SWFUpload({ 
      // Backend Settings 
      // settings go here... 
      // Too long to display here 
      // Debug Settings 
      debug: false 
     }); 
    } 
    window.onload = swfu; 
</script> 
</head> 

....

<div id="swfu_container" style="margin: 0px 10px;"> 
    <div> 
    <span id="spanButtonPlaceholder"></span> 
</div> 
<div id="divFileProgressContainer" style="height: 75px;"></div> 
<div id="thumbnails"></div> 
</div> 

Questo funziona bene, ma il problema è quando provo a mettere questo codice all'interno di una visione parziale. Finora, non sono stato in grado di farlo funzionare.

C'è qualcuno più esperto in soccorso?

Grazie

+2

Cosa si tenta di mettere in parziale? La seconda metà dell'HTML (tutto all'interno di 'swfu_container')? –

+1

Scrivo window.onload = swfu (nello script, all'interno del tag head) per ottenere tutto all'interno di 'swfu_container' (la parte che è nel partial). Il problema, penso, è che quando la pagina è caricata, il partial non c'è ancora! Credo che la soluzione sia nel ottenere lo script da eseguire solo quando viene caricato il partial. Grazie! –

+0

Ma come possiamo farlo? ... –

risposta

3

Puoi mettere la tua funzione in questo modo:

<%= Ajax.ActionLink("YourAction",new AjaxOptions{ OnSuccess="swfu", UpdateTargetId = "spanButtonPlaceholder" }) %> 

così la funzione swfu saranno chiamati se il vostro aggiornamento è successo

+1

Ci scusiamo per il ritardo, la tua risposta ha risolto questo problema. Grazie Gregoire! –

2

Il punto di window.onload è quello di eseguire la funzione data una volta che la pagina ha terminato ... loading. Detto questo, dovresti considerare di spostare il carico in fondo al corpo. E io non sono il più grande fan del mondo nel mantenere gli script nella testa. :)

+0

Vedo il tuo punto sul mantenimento della sceneggiatura nella parte inferiore del corpo. Il problema è che il partial viene caricato solo dopo che l'utente ha fatto qualche azione. Quindi, carico in testa o sul fondo del corpo, non fa il trucco. Ho provato a inserire questo codice (sia lo script che l'HTML) nel partial stesso, ma non funziona. Ho bisogno che lo script venga eseguito e popolare i div solo quando il partial appare sullo schermo. Come lo facciamo ?? –

1

Le viste parziali vengono visualizzate con Microsoft Ajax che non valuta il codice JavaScript. Vorrei suggerire di non usare viste parziali in questo caso o guardare altri motori di visualizzazione come Spark .... o mettere tutto il javascript richiesto nella tua vista genitore che rende il tuo codice un po 'sciatto

Problemi correlati