ASP.NET Web API 2 - POST / jQuery

时间:2015-08-10 13:21:12

标签: jquery asp.net asp.net-web-api asp.net-web-api2

我正在尝试将对象发布到我使用Web API 2的服务器上。代码如下:

e.stopPropagation()

至于Web API:

$.ajax({
     cache: false,
     type: "POST",
     url: "/api/Employees",
     data: { EmployeeId: 1 },
     success: function(result) {
          console.log("employees saved successfully");
     },
     error: function(result) { }
});

我最终得到了来自服务器

的响应
public class EmployeesController : ApiController
{
    // POST api/<controller>
    public void Post([FromBody]Employee value)
    {
    }
}

public class Employee
{
    public Int32 EmployeeId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string JobTitle { get; set; }
    public DateTime BirthDate { get; set; }
    public DateTime HireDate { get; set; }
    public ReferenceData MaritalStatus { get; set; }
    public Int32 VacationDays { get; set; }
    public Int32 SickLeaveDays { get; set; }
    public decimal Salary { get; set; }
    public string Cid { get; set; }
}

3 个答案:

答案 0 :(得分:0)

您需要将注释[httppost]放在控制器上

public class EmployeesController : ApiController
{
    // POST api/<controller>
    [HttpPost]
    public void Post([FromBody]Employee value)
    {
    }
}

http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

在HTTP方法

下的页面中间

答案 1 :(得分:0)

您的WebApiConfig.Register方法中是否可能存在与路由相关的非典型或自定义配置?当ApiController使用动态名称的RESTful约定时,不必添加[HttpPost]元数据属性。同样,当参数是复杂类型时,[FromBody]属性不是必需的。默认情况下,WebApi将查看请求的主体并使用正确的MediaTypeFormatter(XML,JSON,FormUrlEncoded)。下面是默认的WebApiConfig.Register。如果您进行了更改,是否可以恢复为默认的WebApiConfig.Register,删除元数据属性,然后重试?

{tag_addtocart}

答案 2 :(得分:0)

这是因为API路由的工作原理。它&api / NameOfController / NameOfMethod。您的控制器名称为Employee,您的方法名称为Post。如果你想使用那种方法,你需要做/ api / Employee / Post。这就是为什么/ api / Employees / SaveEmployee在您更改方法名称时的工作正常(根据您昨天的评论)。