自从我问这个问题已经有一段时间了。现在,我更加清楚地了解了这一点,我将提出一个更完整的答案来帮助他人。
在Web API中,记住参数绑定是如何发生的非常简单。
- 如果您是
POST
简单类型,则Web API会尝试从URL绑定它 如果您使用的是
POST
复杂类型,则Web API会尝试从请求的正文中绑定它(这使用media-type
格式化程序)。如果要从URL绑定复杂类型,将
[FromUri]
在action参数中使用。这种限制取决于您的数据将要存储多长时间以及它是否超过了url字符限制。
public IHttpActionResult Put([FromUri] ViewModel data) { ... }- 如果要绑定请求正文中的简单类型,请在操作参数中使用[FromBody]。
public IHttpActionResult Put([FromBody] string name) { ... }作为附带说明,假设您正在
PUT请求(只是一个字符串)更新某些内容。如果您决定不将其附加到URL并作为仅在模型中具有一个属性的复杂类型传递,则
datajQuery
ajax中的参数将如下所示。您传递给data参数的对象只有一个属性为空的属性名。
var myName = 'ABC';$.ajax({url:.., data: {'': myName}});您的网络api操作将如下所示。
public IHttpActionResult Put([FromBody] string name){ ... }这个asp.net页面解释了所有这一切。 http://www.asp.net/web-api/overview/formats-and-model-
binding/parameter-binding-in-aspnet-web-api



