2011-07-06 12 views
5

Estoy escribiendo una página css/js que tiene algunas partes dinámicas. Para hacer esto estoy usando un archivo cshtml que contiene css/js - estoy usando mvc.net y devolviendo el css desde una acción del controlador.Cómo hacer que Visual Studio reconozca un archivo cshtml como javascript

El problema es que visual studio reconoce esta página como html y no como javascript/css por lo que no me da coloreo javascript/css e IntelliSense.

Mis preguntas:

  1. ¿Hay una manera mejor/más fácil de crear css/js dinámicos en .net
  2. ¿Cómo puedo obtener el estudio visual para reconocer una página cshtml como Javascript.

Respuesta

0

La mejor solución es seguir un estilo javascript y discreto discreto y poner su Javascript en un archivo .js, poner el CSS en un archivo .css y hacer referencia a ellos en el marcado en su archivo cshtml con una etiqueta <script> y <link>.

p. Ej.

<script src="Scripts/scriptName.js" type="text/javascript"></script> 
<link rel="stylesheet" href="Content/styleSheetname.css" type="text/css" /> 

Esta es una buena práctica ya que mantiene su contenido (marcado)/estilo/comportamiento por separado.

+0

esto hará que habilite para la maquinilla de afeitar .js y .css que no está habilitado de forma predeterminada – vittore

+0

@vittore - ¿Cómo puedo activar la maquinilla de afeitar de JS? eso era exactamente lo que estaba buscando. @stuperUser: estoy buscando crear js dinámicamente ya que tengo pequeños cambios en diferentes escenarios, así que no quiero un archivo js estático. – Daniel

+0

@Daniel, es posible agregar datos al marcado utilizado por el script como indicador/parámetro para decidir cómo ejecutar en lugar de tener código dinámico, si es necesario que se pueda probar. – StuperUser

0

¿Qué hay de malo en poner las etiquetas <script> y <style> en una página y poner allí su js/css dinámico, al final si es dinámico no hay forma de almacenarlo en la memoria caché por lo que este enfoque estará bien. se puede escribir algo, como a continuación:

<script> 
function [email protected](params)(obj) { return obj.field + @MyOtherFunc(params); } 
<script> 

y la maquinilla de afeitar del motor evaluará @MyFunc (params) y @MyOtherFunc (params) antes de enviarlo al navegador

+0

Esto mezcla el comportamiento con el marcado y rompe la capacidad de prueba de la unidad de javascript. – StuperUser

+0

@StuperUser: topic starter solicitó js dinámico, que por defecto es esto – vittore

+0

Es dinámico pero con solo unos pocos escenarios (2 ahora quizás más en el futuro) así que estaba buscando tenerlo en caché. – Daniel

0

JavaScript puede probar con el paquete de Nuget RazorJS. Pero nos hemos encontrado con algunas inconsistencias al usarlo.

Todavía estoy tratando de encontrar una mejor manera de hacer esto usando el Controlador/Vistas y todavía ser capaz de usar intellisense y obtener una coloración decente.

1

Sé que esto es una entrada antigua, pero ... ...

Lo que hice fue sólo hay que poner las etiquetas de script alrededor de mis archivos javascript en su propio archivo .cshtml. Creé un controlador por separado (JavascriptController.cs) y creé un filtro en ese controlador que elimina las etiquetas de script. Establecí el filtro en el método OnActionExecuting. con sólo hacer

this.Response.Filter = new ScriptFilter(Response.Filter, Response.ContentEncoding); 

Para que pueda obtener la sintaxis, se obtiene la maquinilla de afeitar sin tener que utilizar RazorJS, y se puede solicitar los archivos js como rutas regulares en una aplicación MVC. Solo tiene que mantener las etiquetas de secuencia de comandos en la vista parcial durante la edición.

Así se puede llamar

/Javascript/{} Acción

y obtendrá su archivo javascript con su maquinilla de afeitar en ella, y el filtro se quitará las etiquetas de secuencia de comandos para que pueda incluirlo como una secuencia de comandos normal

<script src="http://{host}/Javascript/{action}"></script> 
+0

Buen enfoque: esta publicación de blog entra en más detalles, aunque tiene algunos errores que se abordan en la sección de comentarios. https://blog.mariusschulz.com/2013/07/07/generating-external-javascript-files-using-partial-razor-views?cachebreaker=635670317115705127#comment-20970 –

Cuestiones relacionadas