Preprocesamiento equivalente para vistas en RAZOR / MVC 3
-
29-10-2019 - |
Pregunta
Estoy buscando el equivalente a
#if DEBUG
//view elements to show just for debug builds
#if
para vistas en MVC3 / Razor.¿Cuál es el método idiomático para implementar este tipo de configuración?
Solución
Eso es demasiado complicado en mi opinión.Las vistas deben ser tontas y estar enfocadas en renderizar HTML, no en tomar decisiones basadas en compilaciones.
Establezca propiedades en su modelo de vista si la depuración está configurada y renderícelas en la Vista.
Si las propiedades son nulas (por ejemplo, no depuradas), no se procesará nada.
Otros consejos
Puede utilizar HttpContext.Current.IsDebuggingEnabled , verifica el valor de depuración en el archivo web.config.
Por ejemplo:
@if(HttpContext.Current.IsDebuggingEnabled) {
//view elements to show just for debug builds
}
La otra opción es escribir su propia extensión HttpHelper
public static class HtmlHelperExtensions
{
public static bool IsDebug(this HtmlHelper helper)
{
#if DEBUG
return true;
#else
return false;
#endif
}
}
Luego, en su código de Razor, puede usarlo como:
@if (Html.IsDebug())
{
//view elements to show just for debug builds
}
No crea que puede hacer eso en Razor, ya que no se compila de la misma manera que lo hace el código C #.
Entonces, diría que la mejor manera de hacerlo sería hacerlo en su controlador y agregarlo a un valor en su modelo.
Editar: aquí hay más información.La persona aquí sugiere un método de extensión que carga el código apropiado, ya sea en depuración o no: asp.mvc view ingresa #IF DEBUG en la configuración de la versión Como no nos ha dicho lo que le gustaría hacer, no puedo darle ninguna respuesta en "código".