問題 §
#if DEBUGに相当する機能がRazorに見当たらない
原因 §
そもそも無いらしい
解決 §
擬似的な解決方法を取るしかない。
具体的には、ページに@ifを埋め込んで対応する。
方法1 §
C#側のソースコードに#if DEBUGを埋め込み、特定の値がデバッグビルドで変化するようにする。その値をRazor側の@ifで参照し、処理を分ける。
方法2 §
HttpContext.Current.IsDebuggingEnabledの値を使う。この価はWeb.configの<compilation debug="true">の設定を反映するものだが、通常はデバッグビルドか否かの情報が得られると考えて良い。以下のように記述して使用する。
@if (HttpContext.Current.IsDebuggingEnabled)
{
デバッグビルドジに追加する内容
}
方法1と方法2の使い分け §
- MSも認める方法は方法2である
- 旧バージョンの記述がどんどん削られているダメダメなdocs.microsoft.comには4.5より前のサポートの記述がないので、バージョンが古いと使えないように思えるが別のページには1.1以降でサポートと記述されているのでどのバージョンでもだいだい大丈夫だろうと思われる
- ただし、compilation要素のdebug属性の値を何らかの理由でいじっている場合は方法2は使えない。方法1を使わねばならない