Algunas nos es necesario poder generar código JavaScript desde el lado del servidor, y ASP.NET nos provee esta característica de una forma bastante sencilla, para ello usamos el método RegisterClientScriptBlock de la propiedad ClientScript de la clase Page, la sintaxis entonces sería algo así:

Page.ClientScript.RegisterClientScriptBlock(tipo,nombreScript,codigoScript,insertaScriptTags)

Entonces los parámetros de este método, según la documentación de MSDN es:

  1. tipo [Type]: Tipo del script de cliente que se va a registrar
  2. nombreScript [String]: Clave del script de cliente que se va a registrar
  3. codigoScript [String]: Literal del script de cliente que se va a registrar
  4. insertaScriptTags [Boolean]: Valor booleano que indica si se agregan etiquetas de script.

Ahora vamos a hacer un pequeño ejemplo que ilustra como hacerlo, creamos una página aspx, le agregamos dos botones, y programamos el evento click de cada uno, para el primer botón entonces tenemos:

Protected Sub btnScript1_Click(sender As Object, e As EventArgs) Handles btnScript1.Click Dim sScript As New StringBuilder() With sScript sScript.Append( "alert('Este es un script dinámico');") End With Page.ClientScript.RegisterClientScriptBlock( Me. GetType(), "ScriptDinamico1", sScript.ToString(), True) End Sub

Con el anterior código la idea es simplemente mostrar un alert en la página, lo primero que hacemos es declara una variable de tipo StringBuilder, luego de la línea 4 – 6 lo que hago es a mi variable darle como valor el texto del alert, si es verdad una sola línea de código, entonces para que usar el StringBuilder? bueno lo he colocado para que cuando se cree un script mucho más largo (como es generalmente lo que yo hago) entonces no usemos una variable de tipo string, finalmente utilizamos el método RegisterClientScriptBlock, lo interesante acá es que como valor en el último parámetro le establecemos el valor de True, es decir le decimos que nos genere las etiquetas de apertura y cierre de scripts solo, es decir las etiquetas .

Ahora el código del segundo botón será prácticamente igual, solo que en este caso le vamos a decir que no genera las etiquetas de scripts automáticamente, en dicho caso tenemos que especificárselas:

Protected Sub btnScript2_Click(sender As Object, e As EventArgs) Handles btnScript2.Click Dim sScript As New StringBuilder() With sScript sScript.Append("") End With Page.ClientScript.RegisterClientScriptBlock( Me. GetType(), class="str">"ScriptDinamico2", sScript.ToString(), False) End Sub

Bueno es un tema sencillo, pero espero el post les sea de utilidad.