MVC4 RC WebApi参数绑定

Tha*_*had 9 asp.net-mvc autofac asp.net-web-api

我从MVC4 beta升级到RC和最新的autofac.以下操作正确绑定,但现在两个参数都为null.我看到他们改变了关于格式化程序的事情,但我不确定是什么原因引起了我的问题

[HttpPost]    
RedirectModel MyAction(string value1, string value1)
Run Code Online (Sandbox Code Playgroud)

请求

Method: POST
Accept: application/json
URL: api/controller/myaction
BODY: {"value1":"1000", "value2":"foo"}
Run Code Online (Sandbox Code Playgroud)

mhu*_*mhu 18

如果要避免使用DTO对象,请尝试以下操作:

[HttpPost]    
RedirectModel MyAction(dynamic value1, dynamic value2) {
    string sValue1 = value1;
    string sValue2 = value2;
Run Code Online (Sandbox Code Playgroud)

  • 你是英雄.在我的具体案例中,这是唯一可行的解​​决方案.我不敢相信我以前没想过.我希望我能给你额外的赞成.干杯. (2认同)

Jim*_*rte 8

不确定为什么从Beta改变,但我能够通过将动作签名更改为:

[HttpPost]    
RedirectModel MyAction(MyActionDTO dto)
Run Code Online (Sandbox Code Playgroud)

并将MyActionDTO定义为

 public class MyActionDTO 
 {
        public string value1 { get; set; }
        public string value2 { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

它抛出一个例外,即无法使用两个字符串参数绑定到多个body参数.我想使用DTO对象更接近地代表你在AJAX调用中发送的内容(一个JSON对象).

  • 将[FromBody]添加到参数没有任何影响,参数仍为空. (2认同)