Asp.net mvc 4 MVC4WebAPI能像传统的MVC控制器那样映射值吗?

Asp.net mvc 4 MVC4WebAPI能像传统的MVC控制器那样映射值吗?,asp.net-mvc-4,asp.net-web-api,Asp.net Mvc 4,Asp.net Web Api,Web API是否可以将值从消息体映射到参数列表?例如,如果我有: public HttpResponseMessage Post(int id, string value1, string value2) {} 与此相反: public HttpResponseMessage Post(MyCustomClass message) {} 我通过fiddler发布JSON,只能让后者工作。虽然我更喜欢后者,但我只是好奇第一个例子是否可行。我可以使用querystring参数让它工作,但我无法

Web API是否可以将值从消息体映射到参数列表?例如,如果我有:

public HttpResponseMessage Post(int id, string value1, string value2) {}
与此相反:

public HttpResponseMessage Post(MyCustomClass message) {}

我通过fiddler发布JSON,只能让后者工作。虽然我更喜欢后者,但我只是好奇第一个例子是否可行。我可以使用querystring参数让它工作,但我无法让它发布表单值或json。只是好奇。

不,这不可能。Mike Stall有一篇很好的帖子详细解释了这一点-

简言之,在MVC中,您只有模型绑定器,整个请求主体被缓冲并输入到绑定器中

在WebAPI中,您同时拥有模型绑定器和格式化程序


经验法则是WebAPI使用模型绑定器读取查询字符串参数,使用格式化程序读取正文。并且请求主体没有缓冲——它是一个只读的、单向的异步流。因此,您只能从正文中读取一个内容—无论它是简单类型,即字符串、int还是复杂类型,都无关紧要—它只能是一个内容。

不,这是不可能的。Mike Stall有一篇很好的帖子详细解释了这一点-

简言之,在MVC中,您只有模型绑定器,整个请求主体被缓冲并输入到绑定器中

在WebAPI中,您同时拥有模型绑定器和格式化程序

经验法则是WebAPI使用模型绑定器读取查询字符串参数,使用格式化程序读取正文。并且请求主体没有缓冲——它是一个只读的、单向的异步流。因此,您只能从正文中读取一个内容-无论它是简单类型,即字符串、int还是复杂类型,都无关紧要-它只能是一个内容