0

ac# サーバーに送信する JSON 文字列があります。これは、Event オブジェクトの配列と関係オブジェクトの配列で構成されます。リレーションシップ オブジェクトは、データベース テーブルのリレーションシップを記述します。

ただし、サーバーで JSON からデータを取得するのに問題があります。サーバー上にデシリアライズするオブジェクトが存在せず、次のことを試みると JSON.net が解析エラーをスローします。

// Both throw parse errors
JObject o = JObject.Parse(Request.Form.ToString());
JsonConvert.DeserializeObject<MobileEvents>(Request.Form.ToString());

JSON:

{
    "CreateEvents": {
        "Event": [
            {
                "Id": "1",
                "Subject": "Hire a Clown"
            }
        ],
        "Relationship": [
            {
                "Primary": "Table1",
                "Secondary": "Table2",
                "Field": [
                    {
                        "Table1Id": "1",
                        "Table2Id": [
                            "101"
                        ]
                    }
                ]
            },
            {
                "Primary": "Table1",
                "Secondary": "Table3",
                "Field": [
                    {
                        "Table1Id": "1",
                        "Table3Id": [
                            "200025"
                        ]
                    }
                ]
            },
            {
                "Primary": "Table1",
                "Secondary": "Table4",
                "Field": [
                    {
                        "Table1Id": "1",
                        "Table4Id": [
                            "3"
                        ]
                    }
                ]
            }
        ]
    }
}
4

2 に答える 2

3

Request.Form.ToString()「a = 1&b = 3」のような結果が返されますが、これは間違いなく必要なものではありません。

フォームの送信時に値を渡す場合は、 を使用Request.Form["your-key"]して値を取得できます。

http 本文で値を渡している場合は、new StreamReader(Request.InputStream).ReadToEnd()JSON 文字列全体を取得するために使用できます。

于 2012-05-31T09:40:52.827 に答える
2

取得中にエラーがあると思います...

そうではありません

this.Request.Form.ToString(); // see http://stackoverflow.com/questions/7065979/why-is-the-return-value-of-request-form-tostring-different-from-the-result-of for output

代わりに

this.Request.Form["myInputNAME"].ToString();

重要 - / /...-要素のname-attribute を実際に使用してくださいinputselect

とにかく:私はあなたをお勧めしたいと思います。<asp:HiddenField runat="server" ID="foo" />. サーバーコントロールがある場合は、サーバー側で簡単にその値にアクセスできますがthis.foo.Value、クライアント側では次のような入力フィールドにアクセスできますdocument.getElementById('<%= this.foo.ClientID %>')

于 2012-05-31T09:28:08.770 に答える