2012-05-22 120 views
0

我對Razor上的@helper有個疑問。我試圖做一個@helper簡單的例子,但我不能得到一個結果。我需要添加自定義文本到JavaScript代碼。在螢火蟲我可以看到測試var是空的,我不明白這一點。這是代碼:ASP.NET MVC Razor渲染腳本javascript

@fillString() 
@renderScript() 

@helper fillString(){ 
    test = new List<string>() ; 
    test.Add("Id : '1'"); 
    test.Add("Text: 'hello world'"); 

} 
@helper renderScript(){ 
<script type="text/javascript"> 
    var count = "{ @Html.Raw(test.Count) }"; 
    var testArray = @{ new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(test.ToArray()); }; 

</script> 
} 

非常感謝您

+0

我剛添加分號來最長行的結束,它爲我工作。 –

+0

謝謝Juraj,我看到了。但我並不是太麻煩。我編輯代碼以便看到錯誤 – user1409582

回答

4

如果你想要的是創建一個JSON對象,並分配給一個JavaScript變量,那麼你可以檢查此,

@helper renderScript() 
     { 
     var test = new Dictionary<string, object>(); 
     test.Add("Id", 1); 
     test.Add("Text", "hello world"); 
     var json = @Html.Raw(new JavaScriptSerializer().Serialize(test)); 

     <script type="text/javascript"> 
      var testObj = @json; 
     </script> 
    } 

輸出:

var testObj = {Id: 1, Text: "hello world"} 

UPD ATE:如果你想創建一個JSON陣列進行檢查,

var test = new Dictionary<string, object>(); 
    test.Add("Id", 1); 
    test.Add("Text", "hello world"); 

    var test1 = new Dictionary<string, object>(); 
    test1.Add("Id", 2); 
    test1.Add("Text", "how are you"); 

    var json = @Html.Raw(new 
       System.Web.Script.Serialization.JavaScriptSerializer() 
       .Serialize(new[]{test, test1})); 

輸出:

var testArray = [{"Id":1,"Text":"hello world"},{"Id":2,"Text":"how are you"}]; 
+0

謝謝Mark!所以初始化是不正確的。如果我希望在數組上的以下格式將如何正確的序列化? {array1:{Id:'1',Text:'hello world'},array2:{Id:'2',Text:'hello world2'}};也許新的詞典<字符串,字典<字符串,對象>>? – user1409582

+0

是的,但是如果你想創建一個JSON對象數組,請檢查更新後的答案。 – VJAI

+0

謝謝,它完美的作品 – user1409582