8

Estoy intentando añadir algunas propiedades modelo en mi JavaScript dentro de mi página de contenido:¿Por qué no hay intellisense en ASP.Net MVC 2.0 al asignar valores de modelo a JavaScript?

$(document).ready(function() { 
    createPager(1, <%=Model.TotalPages %>); 
    createUnprocessedPager(1, <%=Model.TotalUnprocessedPages %>); 
}); 

¿Alguien sabe si esto es así por diseño? ¿No está destinado a combinar las propiedades del modelo con JavaScript? ¿O es esto un error?

Esto funciona como se esperaba. Sin embargo, no tengo ningún Intellisense dentro de las etiquetas <% ... %> al escribir el código. Si escribo cualquier código dentro de las etiquetas <script>, entonces no hay Intellisense. Si voy directamente debajo de la etiqueta </script> y escribo <% Model.... %> y luego auge, tengo Intellisense nuevamente.

ACTUALIZACIÓN: 22/10/2010

Basta con leer Scott Guthrie's latest blog post y parece que esta funcionalidad está próximo a salir con el hasta que viene la liberación de ASP.Net MVC 3 (posiblemente para la beta también):

Nota: código de Visual Studio/marcado Intellisense y Colorización dentro archivos de afeitar no están habilitadas pero con la beta a principios de este mes. Usted va a ver esto aparecer en unas pocas semanas - y será compatible con código completo intellisense para HTML, JavaScript, CSS y código C#/VB dentro de los archivos Razor.

+6

Esto puede no ser de mucha ayuda, pero ... funciona con resharper;) – Necros

Respuesta

1

Te perderá Intellisense en las vistas dentro de comillas "" como atributos.

<input type="text" value="<%= DateTime.Today.ToShortDateString() %>" /> 

o si aparece dentro de los bloques de Javascript.

<script type="text/javascript"> 
    <%= DateTime.Today.ToShortDateString() %> 
    </script> 

Es mi opinión que no debe haber Intellisense en estos escenarios, así que diría que es un error y esperar a futuras actualizaciones de Visual Studio abordar y resolver esto.

5

No hay resaltado de sintaxis, creo. No estoy seguro si es un error o una característica, pero AFAIK, combinando el código de esta manera no es una buena práctica. Por lo general, el javascript en línea no es una buena práctica, pero si lo acompañas, combinas las propiedades del modelo con él y luego decides extraer las secuencias de comandos en un archivo js separado, tu código se romperá. Por lo tanto, es bastante común para rellenar los campos ocultos con las propiedades de su modelo y leerlos en sus JS con jQuery, por ejemplo:

<input type="hidden" id="valTotalPages" value="<%=Model.TotalPages %>" /> 
<input type="hidden" id="valTotalUnprocessedPages" value="<%=Model.TotalUnprocessedPages %>" /> 

... 

// in js 
$(document).ready(function() { 
    createPager(1, $("#valTotalPages").val()); 
    createUnprocessedPager(1, $("#valTotalUnprocessedPages").val()); 
}); 

Así falta de resaltado de sintaxis e IntelliSense podría ser un error, pero también podría ser una forma de desalentar ciertos patrones de código.

+2

Nota: aún perderá intellisense cuando haga 'value =" <% = Model.TotalPages%> "'. Esto sucede cada vez que ajusta '<% %>' entre comillas. – Omar

+0

¿Hay alguna forma de evitarlo? ¿O se trata de obtener un plugin de estudios visuales? – GenericTypeTea

+0

introduciendo campos ocultos de extracto no es una buena práctica. aumenta el tamaño de la página. Preferiría vivir sin Intellisense. Votar. –

Cuestiones relacionadas