当我尝试在 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": []
}
}
]
部门的输出:
[
{
"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
}
]
}
]
员工类方法的方法:
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);
}
方法获得员工班级:
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();
}
仅仅是因为您调用方法Post
,这并不意味着它将接受HTTP Post方法。您需要用[HttpPost]
属性进行装饰。
获取是默认值;因此,您不必 获得方法 - 但我认为放置[HttpGet]
的样式也不错。
请注意,您可能会因提交的数据而遇到其他错误;但是至少该系统会找到一种可以响应您的请求的方法...
另外一个说明 - 将HTTP方法放入模型类中是非常不寻常的 - 这就是您拥有控制器的目的。因此,如果他们在部门/员工课程中确实是,您甚至都无法装饰Get/Post方法
update :可能是最后一段(模型类中的获取/帖子,而不是在控制器中(是问题的根本原因!