2012-06-08 8 views
8

MVC4ベータ版からRCと最新のオートファックにアップグレードしました。次のアクションは正しくバインドされていましたが、両方のパラメータがnullになりました。私は、彼らがフォーマッタと、例えば、約物事を変えたが、私はMVC4 RC WebApiパラメーターのバインド

[HttpPost]  
RedirectModel MyAction(string value1, string value1) 

REQUEST

Method: POST 
Accept: application/json 
URL: api/controller/myaction 
BODY: {"value1":"1000", "value2":"foo"} 

答えて

8

本当になぜベータ版からの変更点を確認しますが、私はそれを作ることができなかった私の問題の原因を確認していない参照します

[HttpPost]  
RedirectModel MyAction(MyActionDTO dto) 

としてMyActionDTOを定義:アクションに署名を変更することによりワーク210

2つの文字列パラメタを使用して複数のボディパラメータにバインドできないという例外がスローされました。 DTOオブジェクトを使用すると、AJAX呼び出し(JSONオブジェクト)で送信する内容がより密接に表現されているようです。

+2

は、パラメータがまだヌルいました。 – Thad

+0

そうです。私は自分の答えを更新しました... –

+0

それはうまくいきますが、私はそれを変更する必要がないことを望んでいました。私たちは、体に1つの文字列を持つ呼び出しをいくつか持っています。クエリ文字列に単一のプリミティブ型が必要な理由がわかりません。 – Thad

15

あなたはDTOオブジェクトを使用しないようにしたい場合は、この試してください:任意の効果を持っていなかったパラメータに[FromBody]追加

[HttpPost]  
RedirectModel MyAction(dynamic value1, dynamic value2) { 
    string sValue1 = value1; 
    string sValue2 = value2; 
+2

あなたは英雄です。私の非常に特殊なケースではこれが唯一実行可能な解決策です。私はこれまで考えなかったとは信じられません。私はあなたに追加upvotesを与えることができることを望む。乾杯。 – samuelesque

+0

喜んで助けることができました – mhu

+0

ありがとうございました。それは私のために働いた。 –

関連する問題