Включить частичный просмотр, условно основанный на отладке или выпуске на сайте ASP.Net MVC

У меня есть частичный вид, который включает только базовый HTML, никакой код или модель бритвы. Я использую это, чтобы настроить некоторые "руководства" для макета страницы.

Каким будет правильный/простой способ включить это частичное только в том случае, если сайт запущен в режиме отладки?

Я знаю, что в моем скомпилированном коде я мог бы использовать директивы в своем коде С# для включения разделов. Есть ли что-то подобное в бритве?

Ответ 1

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

@if(HttpContext.Current.IsDebuggingEnabled) {
    //Do something here.
}

ИЛИ используйте вспомогательный метод расширения:

public static Boolean DEBUG(this System.Web.Mvc.WebViewPage page) {
// use this sequence of returns to make the snippet ReSharper friendly. 
#if DEBUG
        return true;
#else
        return false;
#endif
}

и использование:

@if(DEBUG()) {
    //debug code here
} else {
    //release code here
}

Ответ 2

Мой быстрый ответ (вот что может сделать):

Создайте раздел web.config следующим образом:

<appSettings>
    <add key="InProduction" value="true" />
</appSettings>

Затем проверьте:

System.Configuration.Configuration rootWebConfig1 =
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0)
{
    bool inProd = rootWebConfig1.AppSettings.Settings["InProduction"];
}

Затем установите переменную viewbag на основе bool и покажите в представлении Razor:

ViewBag.ShowPartial = inProd;

Бритва:

@if (ViewBag.ShowPartial)
{
    @Html.Partial("MyProductionPartial")
}

Ответ 3

Вы можете сделать статическое свойство в классе:

public static class Foo
{
    public static bool IsDebugMode {get; set;}
}

... а затем в файле Global.asax.cs при запуске вы можете сделать что-то вроде этого:

#if DEBUG
    Foo.IsDebugMode = true;
#endif

... тогда в ваших представлениях вы можете искать Foo.IsDebugMode (вам может потребоваться добавить ссылку).

Или... если вы переопределили свой класс ViewPage, вы можете добавить его как свойство прямо там... он будет выглядеть так, как будто он принадлежит.:)