vista tutorial sintaxis que net mvc modelo español entre diferencias controlador asp asp.net-mvc visual-studio visual-studio-2010 asp.net-mvc-3 razor

asp.net-mvc - tutorial - sintaxis razor mvc 5



¿Por qué el formato de código de Visual Studio no funciona correctamente para el marcado de Razor? (9)

Asegúrese de configurar el editor para que use caracteres espaciales y no pestañas. El editor parece perder completamente la cabeza cuando se usan pestañas. Es una pena porque todos esos caracteres espaciales terminan en la salida HTML real, lo que aumenta enormemente el tamaño de la transferencia de datos. Lo que hago es complementar manualmente el formato automático a medida que escribo. No es ideal, pero con suerte Microsoft tendrá esto resuelto para el siguiente service pack.

O, si prefiero preguntar, ¿cuándo funcionará el formato de código VS correctamente para el marcado de Razor? El formateo funciona para la mayoría de las estructuras, pero parece ahogarse en bloques ''si''. El siguiente código es como está formateado por VS. Es muy fácil solucionar este caso, con una sangría más, pero acepté muy bien el formato en el uso diario, y me gusta utilizarlo a menudo para la mayor parte de mi código, por lo que prefiero evitar el formateo manual si es posible. En este momento, simplemente lo dejo mientras VS lo formatea.

@{ if (User.Identity.IsAuthenticated) { <text>Hello </text> @Html.Display("@ViewBag.UserName") <text> - </text> @Html.ActionLink("Sign Out", "LogOff", "Account", null, new { style = "font-weight: bold;" }) } }

Creo que es importante para la legibilidad que, por ejemplo, en el ejemplo anterior, el cuerpo del bloque if tenga sangría, además de verse mejor.


En este momento estoy en VS2013 ASP.NET MVC 5 y todavía tengo ese problema. Lo que encontré de mucha ayuda es poner la primera expresión en la misma línea donde está el símbolo del bloque de apertura ( @{ ). De esa forma, el formateo del código de la navaja produce un resultado mucho mejor. Aquí están los casos antes y después:

ANTES DE

DESPUÉS


En mi caso, era resharper anulando las opciones de formato.

Si usas el reacondicionador y obtienes este problema, prueba esto ...

Resharper >> Opciones >> Razor >> Editor y formato >> Desmarque "Auto-format on enter"


Encontré otra solución para esto. Simplemente seleccione todo el código en el archivo, haga clic en Mayús + pestaña para eliminar todas las pestañas antes del código, cópielo y péguelo. Visual Studio formatea automáticamente el código. Trabajar en VS 2013 archivo .cshtml


Encontré una "solución" que le permite continuar usando la sangría de tabulación y tener el formato correcto. Es más un patrón. La clave es usar bloques de código de afeitar en lugar de código en línea.

Entonces, por ejemplo, reemplace lo siguiente:

<div> <div> @if (true) { <b>Hi</b> } </div> </div>

con:

<div> <div> @{ if (true) { <b>Hi</b> } } </div> </div>

Este último formateará correctamente, pero el primero no lo hará.

Tenga en cuenta que el formato no es perfecto, pero es mejor que antes.


No funciona correctamente en todos los casos porque es un problema difícil de resolver. Básicamente tienes 3 editores diferentes (HTML, C # y Razor) que interactúan en el mismo buffer de texto. Hay algunos casos (como este) donde las interacciones tienen errores. Pero estamos trabajando en mejorar el editor para el próximo lanzamiento de Razor.


Sé que no es realmente la respuesta que estás buscando, pero he usado WriteLiteral para resolver mis problemas de formato.

Por ejemplo, cuando escribo:

<div> @foreach (var item in Model) { if (condition) { @:</div><div> } <a href="@item.Url">@item.Label</a> } </div>

Visual Studio intenta cambiarlo a:

<div> @foreach (var item in Model) { if (condition) { @: </div><div> } <a href="@item.Url">@item.Label</a> } </div>

Lo que hace que la página arroje un error.

Si usa WriteLiteral, puede engañar al formateador para que ignore la línea, pero no es bonita:

<div> @foreach (var item in Model) { if (condition) { WriteLiteral("</div><div>"); } <a href="@item.Url">@item.Label</a> } </div>


Te recomiendo que evites que se active el formato automático comentando la parte del código donde pegas. De esta manera las cosas no se rompen en pegar.


Una mejor alternativa aquí (en lugar de usar espacios para pestañas) es cambiar la sangría de bloque para HTML y C # / VB a "Bloquear" en lugar de "Inteligente". Esta no es una solución completa, ¡pero la OMI es una solución mucho menos dolorosa que el uso de espacios!