启用ASP.NET Web Api,以适应JSON和表单编码的数据

本文关键字:JSON 表单 编码 数据 NET ASP Web Api 启用 | 更新日期: 2023-09-27 18:13:20

我有一个ASP。. NET web api内置于我的MVC应用程序中,它目前接收所有伴随请求的数据作为表单编码数据。

我将其作为FormDataCollection对象接收,并像这样解析:

public string Post(FormDataCollection data)
{
    var first = data.Get("FirstName");
    //for every supported field.
}

我的响应总是一个JSON字符串。

这很好,我想继续适应这一点,但是我希望我的用户能够发送一个JSON与内容类型头应用程序/JSON 以及,以便我可以支持两者。

我如何以一种简单的方式容纳两者?是否需要检查内容标头并使用不同的代码来提取每种情况下的属性?

启用ASP.NET Web Api,以适应JSON和表单编码的数据

让asp.net模型绑定器为您处理绑定。定义一个类来表示你的模型:

public class Person
{
  public string Firsname{ get; set; }
}

然后让你的控制器动作将这个视图模型作为参数:

public class PersonController : ApiController
{
  public void Post(Person model)
  {
    ...
  }
}

最后,你可以使用jquery ajax或任何你选择的帖子。如

$.ajax({
type: 'POST',
url: '/api/person',
cache: false,
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ Firstname: "John Doe" }),
success: function() {
    ...    
   }
});

尝试使用如下的模型类;

public class MyTargetModel
{
    public string FirstName { get; set; }
}
public string Post(MyTargetModel model)
{
    var first = model.FirstName;
    //for every supported field.
}

我说的模型类是指POCO类。ASP。. NET MVC和Web API应该能够将请求数据解析到适当的类中。