0

フロントエンドから呼び出すMVCJSONコントローラーメソッドがあります。次のようになります。

public JsonResult FacetedSearch(string searchString, List<KeyValuePair<string,string>> facets)

フロントエンドでjQueryajaxを介して呼び出しています。次の方法で、データをシリアル化しています。

JSON.stringify({searchString: "the matrix", facets: [{Key: "TypeName", Value: "Feature Film"}, {Key:"TypeName", Value:"Series"}]}

アプリケーションコードをデバッグすると、searchStringがMVCメソッドに正常に渡されることがわかりますが、変数facetsは、キーと値がnullの2つのKeyValuePairのリストを提供します。

私は自分のシリアル化を調べましたが、それは有効なようですが、何らかの理由でアプリケーションに正しく渡されていません。何が得られますか?

4

2 に答える 2

1

署名に 2 つのオブジェクトを期待するよりも、両方のパラメーターを含む単一のオブジェクトを期待する方が理にかなっています。これは次のようなものになります。

public JsonResult FacetedSearch(RequestObject requestObject)
{ }

public class RequestObject
{
    public string searchString { get; set; } 
    public List<KeyValuePair<string,string>> facets { get; set; }
}

このように、JSON オブジェクトを送信すると、送信するオブジェクトと同様に、署名は 2 つのプロパティを持つオブジェクトになります。

于 2013-03-19T18:25:04.430 に答える
0

Per Is there are serializable generic Key/Value pair class in .NET?

シリーズ化しない理由がわかりました。どうやらそれは非シリアル化可能です。

于 2013-03-19T21:13:13.930 に答える