2011-06-15 18 views
6

¿Es posible incrustar las etiquetas <% ... %> en un archivo javascript y hacer que muestre el código apropiado del lado del servidor? ¿Cómo puede hacerse esto?¿Usa etiquetas ASP.Net en un archivo .js?

+1

Según SO, ambos respondieron al mismo tiempo. – Amy

Respuesta

13

El proceso es en realidad al revés de lo que está pensando.

Crea una página * .aspx que se convierte en un archivo JavaScript. A continuación, puede hacer referencia a ese * página .aspx en su etiqueta <script>:

<script type="text/javascript" src="someJavaScript.aspx"></script> 
+0

¿Cómo es el archivo .aspx? Casi lo hago funcionar, pero el segundo archivo .aspx no parece poder hacer referencia a nada desde el principio. –

6

Sí, esto es posible, pero no sería un archivo JS, sería un archivo aspx con Javascript en lugar de html.

En su página, a refrence se puede hacer:

<script type="text/javascript" src="myPage.aspx"></script> 
1

sí, es posible, simplemente haciendo una página web normal que contiene Javascript en su lugar.

Sin embargo, es posible que no se comporte como esperaba. Los archivos Javascript se almacenan en caché por más tiempo que las páginas. Como es posible que el navegador no solicite el archivo del servidor cada vez, su podría no ejecutarse cada vez que se utiliza el archivo.

+0

hay muchas maneras de hacer que el navegador capte cada solicitud –

+0

La prevención de la memoria caché puede ser un dolor de cabeza. Hay encabezados que puede agregar que funcionan * la mayoría * del tiempo http://stackoverflow.com/q/49547/866236 pero he encontrado algunos navegadores que aún almacenan en caché los archivos. Agregar un parámetro get con una marca de tiempo parece funcionar de manera más confiable: . – Dan

1

Voy a hacer algunas suposiciones sobre lo que está tratando de lograr. Lo más probable es que tengas un archivo javascript que necesite acceso a cierta información en el servidor. Digamos que necesita un poco de materia de la sesión que si se tratara de una página aspx que le haces ver algo así como

<script type="text/javascript"> 
var username = '<%= Session["username"] %>'; 
var account_num = '<%= Session["account_num"] %>'; 
</script> 

, obviamente, esto no funcionará en un archivo .js ya que nunca pasa a través de la página de ciclo de vida que una página aspx sería procesada. Sin embargo, no necesita transformar su archivo .js completo en una página .aspx como algunos otros podrían estar sugiriendo. Hay muchas otras maneras de exponer esos datos a su código js. Voy a enumerar 2.

  1. emiten lo anterior <script> en su respuesta de la página (tal vez mediante un <asp:ContentPlaceHolder />)
  2. crear un servicio web (incluso podría ser una sencilla .ashx) que devuelve el var username = ... o incluso mejores rendimientos JSON
Cuestiones relacionadas