2012-06-08 31 views
8

我从MVC4 beta升级到RC和最新的autofac。以下操作正确绑定,但现在这两个参数都为空。我看到他们改变了一下格式化程序之类的事,但我不知道是什么原因导致我的问题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

真的不知道为什么从Beta版本的变化,但我可以使它

[HttpPost]  
RedirectModel MyAction(MyActionDTO dto) 

和定义MyActionDTO作为

:通过改变操作签名工作210

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

+2

添加[FromBody]的参数也没有任何效果,参数仍然为空。 – Thad

+0

你是对的。我更新了我的答案...... –

+0

这确实有效,但我希望不必改变它。我们确实有几个呼叫在主体中只有一个字符串。我不知道为什么需要在查询字符串上使用单个基本类型。 – Thad

15

当你要避免使用DTO对象,试试这个:

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

你是英雄。这是我特殊情况下唯一可行的解​​决方案。我不敢相信我以前没有想过。我希望我可以给你额外的upvotes。干杯。 – samuelesque

+0

很高兴能帮到您 – mhu

+0

谢谢。这对我有效。 –