分配错误和''来自c#的javascript变量

时间:2016-07-07 12:33:10

标签: jquery asp.net-mvc

我从控制器向默认值(Id = 0,CityId = null,IsPublished = false)传递模型:

public class MyModel
{
    public int Id { get; set; }
    public int? CityId { get; set; }
    public bool IsPublished { get; set; }
}

在视图中我将模型中的值分配给javascript中的变量 - cityId应该是javascript类型的bool,isPublished应该是javascript null或int类型:

<script>    
    var cityId = @Model.CityId; // value: False
    var isPublished = @Model.IsPublished; // value: ''
</script>

但我有错误:

  • 对于cityId:Uncaught ReferenceError: False is not defined
  • For isPublished:Uncaught SyntaxError: Unexpected token ;

我该怎么办?

3 个答案:

答案 0 :(得分:2)

您可以使用Json.Encode方法将数据对象转换为JavaScript Object Notation(JSON)格式的字符串。

var settings = @Html.Raw(Json.Encode(Model))

然后它可以像

一样使用
var cityId = settings.CityId; 
var isPublished = settings.IsPublished; 

答案 1 :(得分:0)

这是因为您的代码是使用ToString隐式执行的。

因此C#bool.ToString()会返回TrueFalse

在Javascript中,它是小写的:truefalse

所以你必须这样写:

<script>    
    var cityId = @Model.CityId; // value: False
    var isPublished = @Model.IsPublished.ToString().ToLower(); // value: ''
</script>

答案 2 :(得分:0)

对于布尔值,总是小写它:

var isPublished = @Model.IsPublished.ToString().ToLowerInvariant(); 

对于可空,检查它是否有值并默认情况下给javascript:

var cityId = @Model.CityId ?? "null"; 
相关问题