2009-09-18 63 views
5

Utilizo este código JavaScript dentro de la etiqueta de cabecera para completar los divs con un botón de exploración para que los usuarios puedan subir imágenes (swfupload).Ejecutar Javascript dentro de una vista parcial en 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> 

Esto funciona bien, pero el problema es cuando trato de poner este código dentro de una visión parcial. Hasta ahora, no he podido hacer que esto funcione.

¿Hay alguien más con experiencia para el rescate?

Gracias

+2

¿Qué se intenta poner en el parcial? La segunda mitad del HTML (todo dentro de 'swfu_container')? –

+1

Escribo window.onload = swfu (en el script, dentro de la etiqueta head) para obtener todo dentro de 'swfu_container' (la parte que está en el parcial). ¡El problema, creo, es que cuando la página está cargada, el parcial aún no está allí! Creo que la solución está en que el script se ejecute solo cuando se carga el parcial. Gracias! –

+0

Pero, ¿cómo podemos hacer eso? ... –

Respuesta

3

Puedes poner tu función de esta manera:

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

por lo que su función SWFU serán llamados si su actualización es exitosa

+1

Disculpe la demora, su respuesta ha resuelto este problema. Gracias Gregoire! –

2

El punto de window.onload es ejecutar la función dada una vez que la página ha terminado ... cargando. Dicho esto, deberías considerar mover la carga a la parte inferior del cuerpo. Y no soy el fanático más grande del mundo de mantener los guiones en la cabeza. :)

+0

Veo su punto de mantener la secuencia de comandos en la parte inferior del cuerpo. El problema es que el parcial solo se carga después de que el usuario haya realizado alguna acción. Por lo tanto, cargar en la cabeza o en la parte inferior del cuerpo no funciona. Intenté poner este código (tanto el script como el HTML) en el parcial en sí, pero no funciona. Necesito el script para ejecutar y completar los divs solo cuando el parcial aparece en la pantalla. ¿Cómo lo hacemos? –

1

Las vistas parciales se representan con Microsoft Ajax que no evalúa el código JavaScript. Sugeriría mirar no usar vistas parciales en este caso o mirar otros motores de vista como Spark .... o poner todo el javascript requerido en tu vista principal que hace que tu código sea un poco descuidado

Cuestiones relacionadas