我从控制器向默认值(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>
但我有错误:
Uncaught ReferenceError: False is not defined
Uncaught SyntaxError: Unexpected token ;
我该怎么办?
答案 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()
会返回True
或False
。
在Javascript中,它是小写的:true
或false
。
所以你必须这样写:
<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";