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これはサーバー側のコードであり、配信されないため、クライアントには表示されません。リストを JSON にシリアル化JavaScriptSerializerし、それを Javascript 変数または非表示フィールドに出力して JavaScript で参照するために使用できます。

以下は物を出力するはずです、それを置く場所を見つけるだけです:

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

したがって、scriptクライアントでレンダリングされるブロックでこれを行う場合は、その呼び出しの出力を変数に割り当て、ページが読み込まれたときに表示されます。

于 2013-03-13T12:51:08.790 に答える