Эквивалент предварительной обработки для представлений в RAZOR / MVC 3 - PullRequest
2 голосов
/ 07 декабря 2011

Я ищу эквивалент

#if DEBUG
   //view elements to show just for debug builds
#if

для просмотров в MVC3 / Razor. Какой идиоматический метод для реализации этого типа установки?

Ответы [ 3 ]

3 голосов
/ 07 декабря 2011

Это слишком грязно, ИМО.Представления должны быть тупыми и ориентированы на визуализацию HTML, а не на принятие решений на основе сборки.

Установите свойства в модели представления, если настроена отладка, и отобразите их в представлении.свойства нулевые (например, не отладочные), ничто не будет отображено.

3 голосов
/ 04 марта 2014

Вы можете использовать HttpContext.Current.IsDebuggingEnabled , он проверяет значение отладки в файле web.config.

Например:

@if(HttpContext.Current.IsDebuggingEnabled) {
    //view elements to show just for debug builds
}

Другая опцияэто использовать написать свое собственное расширение HttpHelper

public static class HtmlHelperExtensions
{
    public static bool IsDebug(this HtmlHelper helper)
    {
        #if DEBUG
          return true;
        #else
          return false;
        #endif
    } 
}

Тогда в вашем коде Razor вы можете использовать его как:

@if (Html.IsDebug())
{ 
    //view elements to show just for debug builds
}
0 голосов
/ 07 декабря 2011

Не думаю, что вы можете сделать это в Razor, поскольку он не компилируется так, как это делает код C #.

Так что я бы сказал, что лучший способ сделать это - сделать это вваш контроллер и добавьте его к значению в вашей модели.

Редактировать: Вот еще немного информации.Человек здесь предлагает метод расширения, который загружает соответствующий код независимо от того, находится он в отладочном состоянии или нет: представление asp.mvc вводит #IF DEBUG в конфигурации выпуска Поскольку вы еще не сказали нам, что хотитеделаю, я не могу дать вам никаких «кодовых» ответов.

...