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,则需要:
- 在Visual Studio中右键单击您的项目
- 卸载项目
- 编辑项目
将以下属性从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 }