Webapi POST 导致 MVC 控制器中的 object
Posted
技术标签:
【中文标题】Webapi POST 导致 MVC 控制器中的 object【英文标题】:Webapi POST results in object in MVC ControllerWebapi POST 导致 MVC 控制器中的 object 【发布时间】:2018-11-24 05:04:12 【问题描述】:我正在尝试将post
和string
转换为MVC Controller
,结果始终为object
,我无法对其进行解析\解码\反序列化。我怎样才能得到那个字符串?
C#:
[HttpPost]
public void Foo(dynamic str)
//str always equals to 'object'
var path = @"C:\cookieParserXmlOutput\";
客户端代码:
then((res:any) =>
let strObj=
str:res.data
;
return this.$http.post("/App/Foo",strObj,
headers: "Content-Type": "application/json; charset=utf-8"
);
).then((res:any)=>
return res;
)
【问题讨论】:
为什么是dynamic
而不仅仅是string
?
string
结果为null
。我不知道为什么....
很奇怪。只要您确定在浏览器开发人员工具中检查了请求并在那里看到它,它就不应该为空。
strObj
的值是多少?
@mjwills 它只是一个键值对象。同 "name" : "jon"
【参考方案1】:
如果您想在POST
正文中发送object
,您还应该在 ASP.NET Endpoint 方法中检索object
。将您的 string str
包装成 class
:
public class MyRequest
public string Str get; set;
[HttpPost]
public void Foo(MyRequest request)
...
【讨论】:
这就是诀窍。非常感谢,今天学到了新东西。【参考方案2】:将内容类型更改为text/plain
,并使用JSON.stringify
将对象转换为字符串
return this.$http.post("/App/Foo",JSON.stringify(strObj),
headers: "Content-Type": "text/plain; charset=utf-8"
);
【讨论】:
我尝试使用 Postman 将类型更改为 text/plain,结果仍然相同 同样的事情,object
以上是关于Webapi POST 导致 MVC 控制器中的 object的主要内容,如果未能解决你的问题,请参考以下文章
在 POST 数据中从 Api 控制器重定向到 MVC 控制器
为啥 jQuery AJAX Post Content-Type=application/json 到 MVC 控制器操作方法导致空参数