0

オブジェクトの 1 つの配列を MVC に投稿するための多くの回答を見つけましたが、複数に苦労しています。それはおそらく私が見逃している小さなものです。

これは私のJSです:

 $.ajax({
                type: "POST",
                url: encodeURI("<%:Url.Action("SaveSimulator")%>"),
                data: JSON.stringify({ 
                    gevelshapes: (gevelshapes), 
                    gevelgaten:(gevelgaten),
                    dakshapes:(dakshapes),
                    dakgaten:(dakgaten),
                    dakrandshapes:(dakrandshapes), 
                    dakrandgaten:(dakrandgaten) 
                }),
                success: function(data){
                    $("form").submit();
                },
                contentType: 'application/json',
                dataType: "json"
            });

これらは、x 座標と y 座標を持つオブジェクトを含む配列です。そのようです:

var gevelshapes = [{ x: "1", y: "2" },{ x: "2", y: "1" }];

私の MVC コントローラーは次のようになります。

[HttpPost]
    public JsonResult SaveSimulator(List<Coordinaat> gevelshapes , List<Coordinaat> dakrandshapes, List<Coordinaat> dakshapes,List<Coordinaat> gevelgaten , List<Coordinaat> dakrandgaten, List<Coordinaat> dakgaten)
    {

        //do something 
    }

List<Coordinaat> gevelshapesMVC は、2 つの「coordinaat」オブジェクトを含む配列ではなく、空の x および y 文字列を含む 1 つのオブジェクトを持っていると考えているため、何かが欠けています。

どんな助けでも素晴らしいでしょう:)

4

1 に答える 1

0

私が間違っているかもしれませんが、mvc は Json 文字列を自動的に解析しません。このようにしてみてください:

 $.ajax({
            type: "POST",
            url: encodeURI("<%:Url.Action("SaveSimulator")%>"),
            data: { x : JSON.stringify({ 
                gevelshapes: (gevelshapes), 
                gevelgaten:(gevelgaten),
                dakshapes:(dakshapes),
                dakgaten:(dakgaten),
                dakrandshapes:(dakrandshapes), 
                dakrandgaten:(dakrandgaten) 
            }) },
            success: function(data){
                $("form").submit();
            },
            contentType: 'application/json',
            dataType: "json"
        });

[HttpPost]
public JsonResult SaveSimulator(string x)
{
     var serializer = new JavaScriptSerializer();
     var result = serializer.Deserialize<object>(x); // You can cast to your preffered class
     // ...
}
于 2012-10-05T14:37:36.377 に答える