2012-05-07 49 views
1

我想設置一個JavaScript對象在我的主要觀點:故障設置JavaScript對象在Razor視圖

<script type="text/javascript"> 
    xx.yy.zz = 
    { 
    a: @Model.Id, 
    b: '@Model.Name', 
    c: @Html.Raw(Model.JsonFeature) 
    } 
</script> 

屬性「一」是一個int。

屬性「b」是一個字符串。

屬性「c」也是服務器端的字符串,但它實際上是一個JSON編碼的字符串,因此我使用@ Html.Raw。

但問題是這一領域可能是空的,所以我試圖做這樣的事情:

<script type="text/javascript"> 
    xx.yy.zz = 
    { 
    a: @Model.Id, 
    b: '@Model.Name', 
    c: @(Model.JsonFeature != null ? Html.Raw(Model.MappingViewModel.JsonFeature) : null) 
    } 
</script> 

而且這導致了各種問題,如呈現此:

<script type="text/javascript"> 
    xx.yy.zz = 
    { 
    a: 1, 
    b: 'Foo', 
    c: 
    } 
</script> 

所以它用「Unexpected token}」來破解它(可以理解)。

如何設置JavaScript屬性爲字符串值或空,使用剃刀C#條件?

+0

你喜歡有c。如果它是空?我的意思是你想要所有的數據{a:1,b:'Foo',c:「」},或者只有a和b,如果c爲null? – oamsel

回答

3

嘗試這樣的:

<script type="text/javascript"> 
    xx.yy.zz = @Html.Raw(Json.Encode(new { 
     a = Model.Id, 
     b = Model.Name, 
     c = Model.JsonFeature != null && !string.IsNullOrEmpty(Model.MappingViewModel.JsonFeature) 
      ? Json.Decode(Model.MappingViewModel.JsonFeature) 
      : (string)null 
    })); 
</script>