【问题标题】:Pre-processing equivalent for views in RAZOR/MVC 3RAZOR/MVC 3 中视图的预处理等效项
【发布时间】:2011-12-06 22:38:33
【问题描述】:

我正在寻找相当于一个

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

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

【问题讨论】:

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


    【解决方案1】:

    IMO 太混乱了。视图应该是愚蠢的,并专注于呈现 HTML,而不是做出基于构建的决策。

    如果配置了调试,请在视图模型中设置属性,然后在视图中渲染它们。

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

    【讨论】:

    • 我将添加 razor 可以处理预处理器指令,但在这种情况下它不会有帮助,因为 razor 视图总是在调试模式下编译,不管是什么在 web.config 中设置。
    【解决方案2】:

    您可以使用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
    }
    

    【讨论】:

      【解决方案3】:

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

      所以我想说最好的方法是在你的控制器中做它并将它添加到你的模型中的一个值中。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多