2016-07-07 42 views
1

我从控制器传递模型用默认值(ID = 0,CityId = NULL,|评论=假)查看JavaScript变量:分配False,并且 '' 从C#

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

并鉴于我赋值从模型到在JavaScript中的变量 - cityId应该在JavaScript布尔类型,并且0人推荐阅读应该是在JavaScript空或为int类型:

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

但我有错误:

  • 对于cityId:Uncaught ReferenceError: False is not defined
  • 对于0人推荐阅读:Uncaught SyntaxError: Unexpected token ;

我该怎么办?

+0

你检查HTML中的实际输出是什么?对于初学者,C#强制将'false'设为'False',所以你会遇到一个大小写敏感的问题 –

+0

'var cityId = @ Html.Raw(Json.Encode(Model.CityId))'(同上'IsPublished ') –

+0

你确定你的'布尔'IsPublished是给''''?你的'int' CityId给出'False'? –

回答

0

这是因为你的代码隐式执行ToString

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

在Javascript中,它的大小写是:truefalse

所以,你必须把它写这样的:

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

对于布尔,总是小写的吧:

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

对于空的,检查它的值,并给JavaScript的默认东西:

var cityId = @Model.CityId ?? "null"; 
+0

var cityId = @ Model.CityId ?? “空值”; - 它不起作用:( – MrChudz

+0

@MrChudz关心详细说明?你得到任何错误信息? – Jamiec

2

您可以使用Json.Encode方法将数据对象转换为字符串th at是JavaScript对象表示法(JSON)格式。

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

然后,它可以使用像

var cityId = settings.CityId; 
var isPublished = settings.IsPublished; 
相关问题