Equivalente de pré-processamento para visualizações em RAZOR / MVC 3
-
29-10-2019 - |
Pergunta
Estou procurando o equivalente a um
#if DEBUG
//view elements to show just for debug builds
#if
para visualizações em MVC3 / Razor.Qual é o método idiomático para implementar este tipo de configuração?
Solução
Isso é muito confuso imo.As visualizações devem ser idiotas e focadas na renderização HTML, não fazendo decisões baseadas em compilação.
Definir propriedades no modelo Visualizar se a depuração estiver configurada, e torná-las para fora na exibição.
Se as propriedades forem null (e.g não-depuração), nada será renderizado.
Outras dicas
Você pode usar HttpContext.Current.IsDebuggingEnabled , verifica o valor de depuração no arquivo web.config.
Por exemplo:
@if(HttpContext.Current.IsDebuggingEnabled) {
//view elements to show just for debug builds
}
A outra opção é usar escrever sua própria extensão HttpHelper
public static class HtmlHelperExtensions
{
public static bool IsDebug(this HtmlHelper helper)
{
#if DEBUG
return true;
#else
return false;
#endif
}
}
Então, em seu código do Razor, você pode usá-lo como:
@if (Html.IsDebug())
{
//view elements to show just for debug builds
}
Não pense que você pode fazer isso no Razor, pois ele não compila da mesma forma que o código C #.
Então, eu diria que a melhor maneira de fazer isso seria no seu controlador e adicioná-lo a um valor no seu modelo.
Editar: Aqui estão mais algumas informações.A pessoa aqui está sugerindo um método de extensão que carrega o código apropriado, esteja em depuração ou não: asp.mvc view enteres #IF DEBUG na configuração de lançamento Como você não nos disse o que gostaria de fazer, não posso dar nenhuma resposta de 'código'.