简体   繁体   English

将MVC模型属性存储到JavaScript var对象语法错误

[英]Storing a MVC Model Property to a JavaScript var object syntax error

for some reason I am getting a syntax error when trying to use Razor syntax to store a model object into a JavaScript var. 由于某种原因,当尝试使用Razor语法将模型对象存储到JavaScript变量中时,出现语法错误。 After researching google it seems that I should be able to do something like this. 研究了谷歌之后,看来我应该能够做这样的事情。 I am using a script tag in my cshtml to do this (I know this is bad practice but I came in late in this project so I'm doing this for uniformity sake) so here is the code. 我在cshtml中使用脚本标记来执行此操作(我知道这是一种不好的做法,但是我来得太晚了,因此出于一致性的考虑而这样做),所以这里是代码。

Index.cshtml: Index.cshtml:

<script>
    var isAvailable = @Model.IsAvailable; // This gives me a syntax error
</script>

I have a Model class with the Boolean property named IsAvailable and I'm trying to store it in the var isAvailable but Visual Studio doesn't like it. 我有一个Model类,其布尔属性名为IsAvailable,我想将其存储在var isAvailable中,但Visual Studio不喜欢它。 Any idea why? 知道为什么吗?

By default MVC calls ToString(), which Booleans converted to string produce upper-cased values (ie. True) where JS boolean syntax requires lower-cased (ie. true). 默认情况下,MVC调用ToString(),该布尔值转换为字符串会产生大写的值(即True),其中JS布尔语法要求小写(即true)。 Try this: 尝试这个:

var isAvailable = @(Model.IsAvailable.ToString().ToLower());

Try using this: 尝试使用此:

<script>
    var isAvailable = @(Model.IsAvailable) ; 
</script>

If not this will surely work: 如果没有,那肯定会起作用:

<script>
    var isAvailable = ('@Model.IsAvailable.ToLower()'=='true'); 
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM