如何将c sharp List Object传递给javascript函数?

时间:2013-03-13 12:45:44

标签: c# javascript json asp.net-mvc-4

我已经尝试过了,但JS函数没有调用

初​​始:

@{   
    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
    }

现在arr是一个JSON对象数组

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

我应该如何在JS上解码?

2 个答案:

答案 0 :(得分: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)序列化可能会出现问题。

答案 1 :(得分:0)

客户端不会看到category_list,因为它是服务器端代码而未提供。您可以使用JavaScriptSerializer将列表序列化为JSON并将其输出到Javascript变量,或将隐藏字段输出到JavaScript。

以下内容应输出该内容,只需找到放置它的位置:

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

因此,如果您在将在客户端呈现的script块中执行此操作,请将该调用的输出分配给变量,然后在加载页面时将其存在。