我正在开发一个MVC应用程序,并希望JavaScript中的一些代码只有在我处于调试模式时才能运行。我发布代码时不希望代码运行。
换句话说,对于javascript / jQuery,C#中是否有类似下面的代码?
#if (DEBUG)
// debugging code block here
#else
// release code block here
#endif
答案 0 :(得分:5)
我建议您在问题中使用该构造,并在viewmodel中设置一些内容以包含/排除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>
}
或使用类似的构造将DEBUG状态传递给您的javascript。
<script type="text/javascript">
startMyJavascript(@Model.IsDebug?"true":"false");
</script>
(对Razor语法不太确定,但我认为以上是好的)
答案 1 :(得分:4)
不确定。这是JavaScript版本。
var DEBUG = true;
if(DEBUG) {
// debug code
} else {
// production code
}
答案 2 :(得分: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,以避免将所有这些混乱放在你的控制器中。