2016-07-07 21 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; 
相關問題