2

我正在开发一个 MVC 应用程序,并且希望 JavaScript 中的一些代码只有在我处于调试模式时才能运行。我不希望在发布代码时运行该代码。

换句话说,对于 javascript / jQuery,C# 中是否有类似于以下代码的内容?

#if (DEBUG)
  // debugging code block here
#else
  // release code block here
#endif
4

3 回答 3

5

我建议在您的问题中使用该构造并在您的视图模型中设置一些内容以包含/排除 javascript。

public ActionResult XXX()
{
    var vm=new MyViewModel(); //or just use ViewBag/ViewData
#if (DEBUG)
    vm.RunJS=true;
#else
    vm.RunJS=false;
#endif
    return View(vm);
}

那么在你看来

@if(Model.RunJS)
{
    <script ...></script>
}

或使用类似的构造将调试状态传递给您的 javascript。

<script type="text/javascript">
    startMyJavascript(@Model.IsDebug?"true":"false");
</script>

(不太确定 Razor 语法,但我认为以上内容很好)

于 2013-07-23T22:45:48.967 回答
4

当然。这是 JavaScript 版本。

var DEBUG = true;

if(DEBUG) {
    // debug code
} else {
    // production code
}
于 2013-07-23T22:45:14.987 回答
2

您始终可以将 ViewBag 与 @Html.Raw() 一起使用。我偶尔会这样做,效果很好。

控制器:

#if DEBUG
    ViewBag.JavaScript = "String representation of JS code";
#endif
    return View();

看法:

@Html.Raw(ViewBag.JavaScript)

我还建议使用包含,例如

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>

而不是原始的 JavaScript,以避免将所有这些混乱都放在控制器中。

于 2013-07-23T22:55:02.317 回答