我正在尝试将对象发布到我使用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; }
}
答案 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在您更改方法名称时的工作正常(根据您昨天的评论)。