如何在 Razor 中使用 #if DEBUG 判斷

在經過不斷的嘗試還有搜尋之後

Razor 中沒有辦法使用 #if DEBUG 判斷!!

在動態編譯的 Razor 中是沒有辦法這樣做的,只能繞路由其他方式來處理。

由需要編譯的檔案中傳遞參數

例如說在 BaseController 加入

ViewBag.isDebug = false;
#if DEBUG
ViewBag.isDebug = true;
#endif

再由 ViewBag 傳遞參數到 Razor 中處理

@if (ViewBag.isDebug)
{
.....
}

或是利用 HttpContext.Current.IsDebuggingEnabled

在 Web.Config 中可以找到

<compilation debug="true" targetFramework="4.0">

這一段中的 debug=”true” 就是決定 HttpContext.Current.IsDebuggingEnabled 回傳的值,而預設的 Web.Release.Config 也有一段是

<compilation xdt:Transform="RemoveAttributes(debug)"/>

移除 debug=”true” 的屬性,所以只要利用

@if(HttpContext.Current.IsDebuggingEnabled)
{
...
}

就可以做判斷了,不過缺點是他只有 isDebug ,如果有自行新增 Symbol 或是用到 #if TRACE 就沒有辦法這樣處理。


如何善用「偵錯模式」進行 ASP.NET 網站或 .NET 程式開發

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *