Razor视图引擎,如何进入预处理器(#if debug)

我今天写了我的第一个razor页面,不知道如何input#if debug #else #endif

我怎样才能在剃刀中input预处理器?

不工作: 见肖恩的答案在下面。

 @{ #if DEBUG // your content #else // your content #endif } 

希望这个帮助。

抱歉! 这段代码总是DEBUG。

我错了。

并推荐模型方法。

如果仅在Web中使用,则引用HttpContext.Current.IsDebuggingEnabled属性。

我刚刚创build了一个扩展方法:

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

然后在我的意见中使用它,如下所示:

 <section id="sidebar"> @Html.Partial("_Connect") @if (!Html.IsDebug()) { @Html.Partial("_Ads") } <hr /> @RenderSection("Sidebar", required: false) </section> 

由于该帮助器是用DEBUG / RELEASE符号编译的,所以它可以工作。

这是内置到HttpContext

 @if (HttpContext.Current.IsDebuggingEnabled) { // Means that debug="true" in Web.config } 

国际海事组织,这比意见的条件编译更有意义,并派上用场的一些testing场景。 (请参阅下面的Code Chief的评论 。)

C#和ASP.NET MVC:在视图中使用#if指令

其实这个答案有正确的答案。 无论您是否通过模型进入debugging模式,您都必须通过。 (或ViewBag),因为所有视图都是以debugging模式编译的。

我知道这不是直接回答这个问题,但因为我非常确定debuggingconfiguration是一个事实,即你实际上是在本地执行的事实的推论,你总是可以使用Request.IsLocal属性作为debugging类似的testing。 因此:

 @if (Request.IsLocal) { <link rel="stylesheet" type="text/css" href="~/css/compiled/complete.css"> } else { <link rel="stylesheet" type="text/css" href="~/css/compiled/complete.min.css"> } 

默认情况下,MVC视图不会编译,因此#IF DEBUG不能在视图中工作。 如果要编译视图以访问IF DEBUGconfiguration,则需要:

  1. 在Visual Studio中右键单击您的项目
  2. 卸载项目
  3. 编辑项目

将以下属性从false更改为true

 <MvcBuildViews>true</MvcBuildViews> 

重新加载你的项目,然后视图将被编译。

唯一的其他解决方法是在你的代码中有一个函数

 public static Boolean DEBUG(this System.Web.Mvc.WebViewPage page) { var value = false; #if(DEBUG) value=true; #endif return value; } 

然后从视图中调用它:

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