renderbody mvc inside codigo javascript razor asp.net-mvc-3

mvc - url action javascript



Sintaxis Razor y Javascript (1)

Debe envolverlo en el pseudo elemento <text> . Esto cambiará el analizador al modo html y luego analizará el javascript como parte del html y no c #. La razón por la que sucede es que el @for() es ac # y todo lo que se trata en el interior también se considera c # hasta que se escape por una etiqueta html. Dado que es probable que no desee una etiqueta html, la afeitadora proporciona la etiqueta <text> para cambiar de modo.

Si nota la diferencia en sus formularios web asp.net, finaliza el <% for línea con un %> que lo saca del modo c #. Si descarga la extensión del resaltador de afeitar para Visual Studio 2010, lo ayudará a ver cuándo el código se trata como código y html se trata como html.

<script type="text/javascript"> var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })"; var availableIds = []; @for(var i = 0; i < Model.Data.Count (); i++) { <text>availableIds.push({ value : "@Model.Data.ElementAt(i).Text", label : "@Model.Data.ElementAt(i).Text" });</text> } </script>

Actualización para la última versión

Ahora puede usar la sintaxis @: para una mayor legibilidad

<script type="text/javascript"> var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })"; var availableIds = []; @for(var i = 0; i < Model.Data.Count (); i++) { @:availableIds.push({ value : "@Model.Data.ElementAt(i).Text", label : "@Model.Data.ElementAt(i).Text" }); } </script>

Como prueba, estoy convirtiendo una aplicación de prueba de concepto que hemos escrito de Web Forms a Razor, simplemente para que podamos evaluarla.

Me he encontrado con un problema hasta ahora que me está haciendo daño ... generando Javascript en el cliente ...

Web-Forms

<script type="text/javascript"> var jqGridIdList = "<%: Url.Action ("getidlist", "office", new { area = "reports" }) %>"; var availableIds = []; <% for (var i = 0; i < Model.Data.Count (); i++) { %> availableIds.push({ value : "<%: Model.Data.ElementAt (i).Text %>", label : "<%: Model.Data.ElementAt (i).Text %>" }); <% } %> </script>

Sintaxis Razor

<script type="text/javascript"> var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })"; var availableIds = []; @for(var i = 0; i < Model.Data.Count (); i++) { availableIds.push({ value : "@Model.Data.ElementAt(i).Text", label : "@Model.Data.ElementAt(i).Text" }); } </script>

El compilador me da el siguiente error en la línea ''availableIds.push'':

Mensaje de error del compilador: CS1525: término de expresión no válido ''{''

Obviamente está tratando de compilarlo como C # ... pero ¿cómo lo detengo?

Gracias,
Kieron