0

我已经这样尝试过了,但是 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 上解码?

4

2 回答 2

1

您可以通过以下方式执行此操作:

@Json.Encode(category_list)

更新:

<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) 序列化可能存在问题。

于 2013-03-13T12:51:25.297 回答
0

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

下面应该输出的东西,随便找个地方放吧:

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

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

于 2013-03-13T12:51:08.790 回答