【问题标题】:Storing a MVC Model Property to a JavaScript var object syntax error将 MVC 模型属性存储到 JavaScript var 对象语法错误
【发布时间】:2016-11-21 04:51:14
【问题描述】:

由于某种原因,我在尝试使用 Razor 语法将模型对象存储到 JavaScript var 时遇到语法错误。在研究了谷歌之后,我似乎应该能够做这样的事情。我在我的 cshtml 中使用脚本标签来执行此操作(我知道这是不好的做法,但我在这个项目中来得很晚,所以我这样做是为了统一)所以这里是代码。

Index.cshtml:

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

我有一个带有名为 IsAvailable 的布尔属性的 Model 类,我试图将它存储在 var isAvailable 中,但 Visual Studio 不喜欢它。知道为什么吗?

【问题讨论】:

  • 确切的语法错误是什么?
  • 字面意思是“语法错误”,哈哈。红色错误线就在分号之后
  • 您的代码对我来说看起来不错。运行时是否显示错误?另外,请记住 True 不是 true
  • IsAvailable 是布尔值吗?无论如何,请尝试将其括在引号中:var isAvailable = "@Model.IsAvailable"
  • True 不是true。所以你应该尝试一下var isAvailable = @(Model.IsAvailable? "true" : "false");

标签: javascript c# asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

试试这个:

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

如果不是这样肯定会起作用:

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

【讨论】:

    【解决方案2】:

    默认情况下,MVC 调用 ToString(),将其转换为字符串的布尔值生成大写值(即 True),而 JS 布尔语法需要小写(即 true)。试试这个:

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

    【讨论】:

    • 如果我在括号内的内容周围加上单引号,那么这非常有效。谢谢!!!
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多