对RAZOR / MVC 3中的视图进行预处理

时间:2011-12-06 22:38:34

标签: asp.net-mvc-3 razor compiler-directives

我正在寻找相当于

的东西
#if DEBUG
   //view elements to show just for debug builds
#if

用于MVC3 / Razor中的视图。实现这种类型的设置的惯用方法是什么?

3 个答案:

答案 0 :(得分:3)

IMO太乱了。视图应该是愚蠢的,并专注于渲染HTML,而不是基于构建的决策。

如果配置了调试,则在视图模型中设置属性,并在视图中将其渲染出来。

如果属性为null(例如非调试),则不会呈现任何内容。

答案 1 :(得分:3)

您可以使用HttpContext.Current.IsDebuggingEnabled,它会检查web.config文件中的调试值。

例如:

@if(HttpContext.Current.IsDebuggingEnabled) {
    //view elements to show just for debug builds
}

另一个选项是使用编写自己的HttpHelper扩展

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

然后在您的Razor代码中,您可以将其用作:

@if (Html.IsDebug())
{ 
    //view elements to show just for debug builds
}

答案 2 :(得分:0)

不要认为你可以在Razor中做到这一点,因为它的编译方式与C#代码不同。

所以我想说最好的方法是在控制器中执行此操作并将其添加到模型中的值。

编辑:这里有更多信息。这里的人建议一个扩展方法加载适当的代码,无论它是否处于调试状态:asp.mvc view enteres #IF DEBUG in release configuration 既然你没有告诉我们你想做什么,我就不能给你任何“代码”答案。