Estoy trabajando en la aplicación web donde la página principal contiene dos partes: el bloque constante que siempre está visible y el bloque de información compuesto por una de las 3 vistas parciales. Cada una de las vistas parciales aparece como resultado de la solicitud AJAX y se carga una sola vez (después de que jquery proporcione las ventanas de cambio). Funciona bien pero me he enfrentado a un problema.¿Está bien poner JavaScript en vistas parciales?
El código html de vistas parciales contiene funciones js que se usan en el bloque constante y en el bloque de información también. Cuando la página está cargada, estas funciones pueden "verse" entre ellas y funciona, pero el reafilador no puede encontrar declaraciones de funciones y advertirme sobre esto. No puedo resolver el problema transfiriéndolos a un archivo js externo debido a la sintaxis de la afeitadora que se puede encontrar en su código.
¿Qué puedo hacer con esto?
Gracias.
Actualización:
Finalmente me he decidido a resolver el problema de la separación de mi código js desde puntos de vista. Entonces, la nueva pregunta fue cómo incluir la sintaxis de la afeitadora en archivos js o cuál es la alternativa aceptable. Las soluciones populares que he encontrado están usando variables globales, atributos de datos y el que más me gusta: la biblioteca RazorJS de John Katsiotis.
http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files
espero que va a trabajar y hacer estable ReSharper feliz.
¡Salud!
Actualización:
Después de 3 años recordé esta cuestión y decidió actualizarlo de acuerdo a mi experiencia. De hecho, ahora prefiero no recomendar el uso de bibliotecas adicionales para eso. Especialmente si usted no es el único miembro del equipo del proyecto ... Es mucho mejor si está asegurado en todas sus bibliotecas, es compatible con el creador y la comunidad y puede integrarse fácilmente en su IDE (si utiliza una sintaxis especial, por ejemplo) . Además, todos los chicos de tu equipo deberían saber cómo funciona. Así que ahora sugeriría hacer lo siguiente:
- Mantenga todos los archivos JS en archivos separados. Aísla todo lo que puedas. Proporcione la API externa para ello.
- Llamar a las funciones API desde sus Vistas.
- Pase todos los URL generados por Razor, mensajes de texto, constantes como parámetro de recurso.
Por ejemplo:
js archivo:
$.api.someInitFunction = function(resources){ ... }
Vista:
<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>
no podía decidir qué respuesta era más útil para mí :) – Tomy
Gracias y bienvenidos a Stackoverflow :) –
Es agradable comenzar con una recepción tan agradable, muchas gracias! – Tomy