2012-01-26 7 views
7

Me gustaría utilizar la sintaxis de afeitar dentro de mis archivos Javascript. ¿Es esto posible sin incluir el javascript en línea en la página?¿Es posible utilizar la sintaxis de afeitar en archivos Javascript?

+0

¿Por qué necesita usar Razor en sus archivos javascript? ¿Qué más específicamente necesitas lograr? Apuesto a que hay mejores formas de lograrlo. –

+0

posible duplicado del símbolo [asp.net-mvc: razor '@' en el archivo js] (http://stackoverflow.com/questions/7902213/asp-net-mvc-razor-symbol-in-js-file) – gdoron

+0

@DarinDimitrov: solo necesitaba usar Url.Action() en mis peticiones ajax. – Tjaart

Respuesta

3

El motor Razor solo se ejecuta en la página, no en los archivos javascript incluidos.

Puede escribir un analizador personalizado que ejecutará el motor de vista contra cualquier archivo javascript antes de servirlos, y me imagino que cualquier intento de hacerlo sería un proyecto de código abierto muy útil.

Sin embargo, la solución más simple que viene a la mente (si estas variables no están vinculadas setemáticamente a cualquier elemento DOM) es simplemente declarar e inicializar sus variables en la página (o en una página parcial incluida) y su javascript (en .js archivos) se basa en la definición de estas variables.

Sin embargo, si las variables que necesita están asociadas lógicamente con los elementos DOM, prefiero usar los atributos data-* para definirlos, de esta forma su javascript puede ser consumido por el html, y no al revés. Por ejemplo, si usted tiene un área de contenido que debe ser actualizado automáticamente por Javascript (jQuery como un ejemplo aquí):

HTML:

<div data-auto-refresh="pathToContent" data-auto-refresh-milliseconds="1000"></div> 

Javascript:

$(function() { 
    $('[data-auto-refresh]').each(function() { 
    var self = $(this); 
    var url = self.data('auto-refresh'); 
    var interval = self.data('auto-refresh-milliseconds'); 
    // Code to handle refresh here ... 
    }); 
}); 
+0

+1 ... y alternativamente puede pasar los valores requeridos a su archivo JS en la cadena de consulta. –

2

Puede establecer el valor en el campo oculto en el archivo cshtml yout, y luego en sus archivos javascript se puede acceder al campo oculto.

Cuestiones relacionadas