0

我正在使用带有 ASP.NET MVC 4 的 Visual Studio 2012 RC。这让我发疯,我知道这已经被问过好几次了,但是我找不到 MVC 4 的解决方案,也没有 MVC 3 的统一解决方案。 我肯定错过了什么...

我想要做的就是在一段 javascript 中输出 ac# 变量。这应该是微不足道的,并且是必须能够做到的,但是尽管我尝试了所有的解决方法/黑客,没有什么可以摆脱“条件编译已关闭”错误。如果它只是一个警告,这会很好,但它是一个错误。如果我关闭 Visual Studio 内部的视图,它会编译并正常工作,但如果它是打开的,我什至无法编译,这是不可接受的。

我试过使用/*@cc_on @*//*@("@cc_on @")*/打开条件编译无济于事。这样做@(serverVar)会产生无效字符错误 (@)。我也尝试过@Html.Raw和其他几件事。

我在没有错误的情况下包含 razor 代码的唯一方法是,如果 razor 代码在引号内,这对字符串很有效,但不适用于 int 和 bool。

@{
    int serverVar = 5;
}

<script>
    var obj = { jsVar: @serverVar };
</script>

我到处寻找这个,但找不到一致同意的解决方案。我错过了什么吗?任何帮助是极大的赞赏。

4

3 回答 3

1

使用 JavaScriptModel ( http://jsm.codeplex.com )

通过这种方式,您可以轻松地将服务器端变量传输到 javascript,而无需烦人的内联 javascript。

您只需在控制器操作中编写以下代码:

this.AddJavaScriptVariable("VariableNameInJavaScript", serverVar);

如果您想在每个页面上设置多个变量,请使用此处记录的过滤器:

http://jsm.codeplex.com/wikipage?title=Use%20JavaScriptModel%20in%20a%20global%20filter&referringTitle=Documentation

编辑:如果你有很多变量,你应该对它们进行分类并将它们添加到不同的文字中。例如

this.AddJavaScriptVariables("Config.UserId", userId,
    "Config.SomeOtherConfig", someOtherConfigValue,
    "MyGoogleMapController.Pushpins", GetMapPushpins());
于 2013-01-10T11:20:34.723 回答
0

嗯,我想没有办法摆脱这个错误,因为它仍然编译一切都太棒了。

于 2013-01-05T22:02:26.000 回答
0

我通过使用以下技巧解决了它。

var supportNumber = Number(@TempData["supportedNumber"]);

于 2013-11-01T16:32:26.997 回答