web-dev-qa-db-ja.com

MVC4 RCWebApiパラメーターバインディング

MVC4ベータ版からRCおよび最新のautofacにアップグレードしました。次のアクションは正しくバインドされていましたが、両方のパラメーターがnullになりました。彼らがフォーマッターなどについて物事を変えたのを見ますが、何が私の問題を引き起こしたのかわかりません

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

リクエスト

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

ベータ版からの変更の理由はよくわかりませんが、アクションの署名を次のように変更することで機能させることができました。

[HttpPost]    
RedirectModel MyAction(MyActionDTO dto)

myActionDTOを次のように定義します

 public class MyActionDTO 
 {
        public string value1 { get; set; }
        public string value2 { get; set; }
 }

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

8
Jim Harte

DTOオブジェクトの使用を避けたい場合は、次のことを試してください。

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