我正在使用 ASP.Net MVC 3 Razor View 引擎。
我需要根据我的 View 模型中的值在我的 View 中生成一些 JavaScript 代码。我需要使用的值是一个 bool 值,在这个例子中我们称之为 IsSet
.
所以我想做的是基于这个值创建一个 JavaScript bool 值,以后可以在脚本中使用它。
请记住,对于以下所有示例,我的 View 顶部都有这段代码......
@{ string IsSet = Model.IsSet ? "true" : "false"; }
注意 : 以下所有示例都是 JavaScript。
第一次尝试 ...
var IsSet = @(IsSet);
...这确实有效,问题是它破坏了自动格式化 (CTRL + E, D) 在 VS 2010 中由于 JavaScript 格式错误 - 正如您所料,这是 Not Acceptable 。
第二次尝试 ...
var IsSet = "@(IsSet)";
...我知道,JavaScript 很聪明,它会在需要时自动解析我的字符串。哎呀,忘了它是一个字符串类型,除了空之外的任何东西都会评估为真。
第三次尝试 ...
var IsSet = Boolean("@(IsSet)");
....当然这会起作用...不,再次将非空字符串转换为true(解析器错误!)
第四次尝试 ...
var IsSet = "@(IsSet)" === "true";
终于有一些有用的东西了,但对我来说看起来不太好。
如果需要,我会使用它,但最终我的问题是:有没有更好的方法来处理这种情况?也许,我第一次尝试中的不良行为只是微软可能忽略的东西?
如果有人对我来说有一个漂亮而整洁的第五次尝试,那就太好了。
对我来说重要的是 VS 2010 中的自动格式化不会中断
谢谢
最佳答案
我只是在同一个问题上挣扎了大约一个小时。我的最终解决方案相当于以下内容。
var IsSet = @(Model.IsSet.ToString().ToLower()); // Inside JavaScript block
这不需要额外的代码。
关于javascript - MVC 3 Razor View : Generating JavaScript from a boolean model value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8560531/