2010-04-03 16 views
6

Hola a todos compañero programadordevolver un archivo js del controlador de asp.net mvc

Me gustaría tener un archivo js separado para cada MVC establecer que tengo en mi solicitud

/Controllers/ 
    -TestController.cs 
/Models/ 
/Views/ 
    /Test/ 
     -Index.aspx 
     -script.js 

Y' d como para incluir el js en el Index.aspx por

<script type="text/javascript" src="<%=UriHelper.GetBaseUrl()%>/Test/Js"></script> 

O, para decirlo más fácil, cuando llamo http://localhost/Test/Js en el navegador, me va a mostrar el archivo de script.js

¿Cómo se escribe la acción en el controlador? Sé que esto debe hacerse con el método de devolución de archivos, pero no he crear con éxito el método :(

+0

Publique el código que ha intentado y veremos si y dónde se está equivocando. – Lazarus

Respuesta

14

¿Qué tal:.

public FileContentResult Js() 
    { 
     return File(System.IO.File.ReadAllBytes(Server.MapPath("/Test/script.js")), "text/javascript"); 
    } 

voy a añadir que realmente debería tener las secuencias de comandos en su carpeta de contenido como MVC es todo acerca de la convención anterior configuración y al tratar de colocar las secuencias de comandos con sus puntos de vista que están rompiendo la convención.

+1

+1 para convenciones ... ¡Eso es lo que MVC se trata de – Flexo

+0

+1 para obtener un gran apodo! ;) – Lazarus

+0

excepto el caso raro en el que desea agregar validación de seguridad a los archivos devueltos que dependen del perfil de autenticación/identificación de miembro de un usuario. En ese caso, la convención puede apestar. – FlavorScape

1

dos opciones:

  • Volver al javascript como una cadena utilizando el Javascript ActionResult
  • Retorno el archivo JavaScript como un archivo descargable mediante la descarga de archivos ActionResult

HTH

Cuestiones relacionadas