RAZOR/MVC 3 中视图的预处理等效项

发布于 2024-12-19 18:32:47 字数 149 浏览 4 评论 0原文

我正在寻找

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

MVC3/Razor 中 for 视图的等效项。实现此类设置的惯用方法是什么?

I'm looking for the equivalent of an

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

for views in MVC3/Razor. What's the idiomatic method for implementing this type of a setup?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

长不大的小祸害 2024-12-26 18:32:47

在我看来,这太混乱了。视图应该是愚蠢的,并且专注于渲染 HTML,而不是做出基于构建的决策。

如果配置了调试,请在视图模型中设置属性,并将它们呈现在视图中。

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

That's too messy IMO. Views should be dumb, and focused on rendering HTML, not making build-based decisions.

Set properties in your view model if debug is configured, and render them out in the View.

If the properties are null (e.g non-debug), nothing will get rendered.

二手情话 2024-12-26 18:32:47

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

You can use HttpContext.Current.IsDebuggingEnabled, it checks debug value in the web.config file.

For instance:

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

The other option is use write your own HttpHelper extension

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

Then in your Razor code you can use it as:

@if (Html.IsDebug())
{ 
    //view elements to show just for debug builds
}
猛虎独行 2024-12-26 18:32:47

不要认为您可以在 Razor 中执行此操作,因为它的编译方式与 C# 代码不同。

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

编辑:这里有一些更多信息。这里的人建议使用一种扩展方法来加载适当的代码,无论它是否处于调试状态: asp.mvc查看发布配置中输入#IF DEBUG
由于您还没有告诉我们您想做什么,所以我无法给您任何“代码”答案。

Don't think you can do that in Razor as it doesn't compile the same way as C# code does.

So I'd say the best way to do it would be to do it in your controller and add it to a value in your model.

Edit: Here's some more info. The person here is suggesting an extension method that loads the appropriate code whether it's in debug or not: asp.mvc view enteres #IF DEBUG in release configuration
Since you haven't told us what you'd like to do, i can't give you any 'code' answers.

够钟 2024-12-26 18:32:47

预处理器指令 (#if) 是 C# 的一项语言功能,您可以使用 剃刀代码块 (@{}),然后使用 显式分隔转换 () 或 显式行转换 (@:) 有条件地添加 html,如下所示:

@{

#if DEBUG
{
    @:<div>Debug Mode</div>
}
#else
{
    <text>
        <div>
            Release Mode
        </div>
    </text>
}
#endif

}

另请参阅: Razor 中的预处理器指令

Preprocessor directives (#if) are a language feature C#, which you can enter by using a razor code block (@{}) and then use a explicit delimited transition (<text></text>) or an explicit line transition (@:) to conditionally add html like this:

@{

#if DEBUG
{
    @:<div>Debug Mode</div>
}
#else
{
    <text>
        <div>
            Release Mode
        </div>
    </text>
}
#endif

}

See Also: Preprocessor directives in Razor

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文