Equivalente di pre-elaborazione per le viste in RAZOR / MVC 3
-
29-10-2019 - |
Domanda
Sto cercando l'equivalente di un
#if DEBUG
//view elements to show just for debug builds
#if
.
Per le viste in MVC3 / Razor.Qual è il metodo idiomatico per implementare questo tipo di configurazione?
Soluzione
È troppo complicato IMO.Le visualizzazioni dovrebbero essere stupide e concentrate sul rendering dell'HTML, non sul prendere decisioni basate sulla build.
Imposta le proprietà nel tuo modello di visualizzazione se il debug è configurato e visualizzale nella vista.
Se le proprietà sono nulle (ad esempio non di debug), non verrà visualizzato nulla.
Altri suggerimenti
Puoi utilizzare HttpContext.Current.IsDebuggingEnabled , controlla il valore di debug nel file web.config.
Ad esempio:
@if(HttpContext.Current.IsDebuggingEnabled) {
//view elements to show just for debug builds
}
L'altra opzione è usare scrivi la tua estensione HttpHelper
public static class HtmlHelperExtensions
{
public static bool IsDebug(this HtmlHelper helper)
{
#if DEBUG
return true;
#else
return false;
#endif
}
}
Quindi nel tuo codice Razor puoi usarlo come:
@if (Html.IsDebug())
{
//view elements to show just for debug builds
}
Non pensare di poterlo fare in Razor poiché non si compila allo stesso modo del codice C #.
Quindi direi che il modo migliore per farlo sarebbe farlo nel controller e aggiungerlo a un valore nel tuo modello.
Modifica: ecco qualche informazione in più.La persona qui sta suggerendo un metodo di estensione che carica il codice appropriato, indipendentemente dal fatto che sia in debug o meno: la vista asp.mvc inserisce #IF DEBUG nella configurazione della versione Dato che non ci hai detto cosa vorresti fare, non posso darti alcuna risposta in "codice".