当我尝试在Post
方法中添加一些值时,操作员被拒绝,并显示消息错误。请求的资源不支持http方法'POST'。
员工类别:
public class Employee
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public decimal sallary { get; set; }
public int Age { get; set; }
public Department Department { get; set; }
}
部门类别:
public class Department
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public ICollection<Employee> Employee { get; set; }
}
员工Json的输出:
[
{
"Id": 1,
"Name": "ibrahim",
"sallary": 6200,
"Age": 20,
"Department": {
"Id": 3,
"Name": "IOS",
"Employee": []
}
},
{
"Id": 2,
"Name": "ibrahimmmm",
"sallary": 6200,
"Age": 20,
"Department": {
"Id": 2,
"Name": "android",
"Employee": []
}
}
]
部门Json的输出:
[
{
"Id": 1,
"Name": "design",
"Employee": []
},
{
"Id": 2,
"Name": "android",
"Employee": [
{
"Id": 2,
"Name": "ibrahimmmm",
"sallary": 6200,
"Age": 20
}
]
},
{
"Id": 3,
"Name": "IOS",
"Employee": [
{
"Id": 1,
"Name": "ibrahim",
"sallary": 6200,
"Age": 20
}
]
}
]
Employee类的方法发布:
public IHttpActionResult Post(Employee employee, int DepartmentId)
{
if (ModelState.IsValid)
{
var _department = db.Department.Find(DepartmentId);
employee.Department = _department;
db.Employee.Add(employee);
db.SaveChanges();
return Ok(employee);
}
return BadRequest(ModelState);
}
方法Get Of Employee类:
public IEnumerable<Employee> Get()
{
return db.Employee.Include(m => m.Department).ToList();
}
部门类的方法职位:
public IHttpActionResult Post(Department dep) {
if (ModelState.IsValid)
{
db.Department.Add(dep);
db.SaveChanges();
return Ok(dep);
}
return BadRequest(ModelState);
}
方法获取部门类:
public IEnumerable<Department> Get() {
var a = db.Department.Include(e => e.Employee).ToList();
return a;
//return db.Department.Include(item => item.Employee).ToList();
}
答案 0 :(得分:1)
仅因为您调用方法Post
,并不意味着它将接受HTTP POST方法。您需要使用[HttpPost]
属性进行修饰。
GET是默认设置;因此您不必不必装饰Get方法-但我认为放置[HttpGet]
也是一种很好的风格。
请注意,关于提交的数据,您可能还会遇到其他错误;但至少系统会找到一种方法来响应您的请求...
更多说明-将HTTP方法放在模型类中是非常不寻常的-这就是您要使用的控制器。因此,如果它们在Department / Employee类中是真正
,则您甚至可能无法修饰Get / Post方法。更新:可能最后一段(在Model类中而不是在控制器中为Get / Post)是问题的根本原因!