2013-03-13 53 views
0

我已經嘗試過這樣的,但在JS函數不調用如何通過升C列出對象到Java腳本函數?

初始:

@{ 
    List<CmsSite.Models.Category> category_list = (List<CmsSite.Models.Category>)ViewData["categories_details"]; 
} 

傳球給js函數:

<button onclick="InsertNewProduct(@Json.Encode(category_list))">Save</button> 

js函數:

function InsertNewProduct(arr) { 

    json_obj = { 
        //what to do here 
    } 

現在常用3是JSON對象的數組

我看不到List<CmsSite.Models.Category> category_list的值

我應該如何解碼這個JS?

回答

0

客戶端將無法看到category_list,因爲這是服務器端代碼和未送達。你可以使用JavaScriptSerializer序列化列表到JSON,並輸出到一個Javascript變量,或隱藏字段使用JavaScript來引用。

下應該輸出的東西,隨便找個地方把它:

@Html.Raw(new JavaScriptSerializer().Serialize(category_list)) 

所以,如果你這樣做的script塊將在客戶端上呈現,指定該調用的輸出到一個變量,然後它在頁面加載時出現。

+0

我有編輯quastion,現在我得到的對象 – user1310492 2013-03-13 12:57:57

1

您可以按以下方式做到這一點:

@Json.Encode(category_list) 

UPD:

<script> 
    function testFunc(arr) { 
     for (var i = 0; i < arr.length; i++) { 
      alert(arr[i]); 
     } 
    } 
</script> 

<button onclick="testFunc(@Json.Encode(new List<string> { "1", "2", "3" }))"> 
    Save 
</button> 

如果不爲你工作,有可能是您的模型類(CmsSite.Models.Category)序列化的問題。

+0

的阿雷沒想到MVC只是這次來到。好東西。 – 2013-03-13 12:53:23

+0

我有編輯quastion,現在我得到的對象 – user1310492 2013-03-13 12:57:25

+0

的阿雷我用列表嘗試這樣做,這個工作得很好。查看更新的答案。 – 2013-03-13 15:18:15