Согласно этой публикации SO , если вы хотите, чтобы подобные вещи работали, вы можете использовать свойство в вашей модели для управления условными вещами представления, так что C # устанавливает логическое значение модели (* 1003)* или что-либо еще) через директиву времени компиляции, и View полагается на это.
Таким образом, ваша Модель в конечном итоге сделает что-то вроде:
bool IsDebug = true;
#if (!DEBUG)
IsDebug = false;
#endif
, а ваш View будет делать что-то вроде:
@if(Model.IsDebug)
{
}
else
{
}
Вы также можете использовать ViewBag / ViewData для хранения этого логического значения, я полагаю.
ОБНОВЛЕНИЕ:
Основываясь на ваших комментариях, вот чтоВы могли бы делать:
Создать новый класс BaseController
, который наследуется от Controller
.
public abstract class BaseController : Controller
{
...
protected BaseController()
{
bool indebug = false;
#if DEBUG
indebug = true;
#endif
ViewBag.InDebug = indebug;
}
}
, и ваши контроллеры наследуют от него, а не от контроллера.
Тогда в вашем _Layout.cshtml вы могли бы сделать это:
@if (ViewBag.InDebug)
{
}
else
{
}
Кажется, это работает нормально.