0

MVC4 RC で Microsoft Web API に渡されたデータを次のクラスのオブジェクトに逆シリアル化する作業を行っています。

public class EditorCreateEditSubmission
{
    public string action { get; set; }
    public string table { get; set; }
    public string id { get; set; }
    public Dictionary<string, string> data { get; set; }
}

Web API メソッドが EditorCreateEditSubmission にマップする必要があるデータを取得するたびに、次のように「データ」フィールドは空になります。

空のデータ

(Table と ID は空でも構いません)

私のコントローラーの方法:

public EditorServerResponse Post(EditorCreateEditSubmission ajaxSubmission)
{
//...Handle data
}

生のヘッダー:

POST http://localhost:64619/API/Species HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:64619/Manage/Species
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Host: localhost:64619
Content-Length: 134
Connection: Keep-Alive
Pragma: no-cache

action=create&table=&id=&data%5Bamu%5D=1&data%5BchemicalFormula%5D=H&data%5BcommonName%5D=Hydrogen&data%5Bstatus%5D=N&data%5Bnotes%5D=

より読みやすいビュー:

action  create
table   
id  
data[amu]   1
data[chemicalFormula]   H
data[commonName]    Hydrogen
data[status]    N
data[notes] 

入力値の可能なすべてのセットの値を取得/設定するクラスを手動で作成する必要がありますか? このデータをディクショナリに逆シリアル化するのは簡単なようですが、Microsoft の MVC4 の新しい RC リリースで例を見つけるのに苦労しています。

4

1 に答える 1

1

FormUrlEncodedMediaTypeFormatter がこれを処理するとは思わない。

于 2012-08-06T06:43:01.793 に答える