Web API MVC 错误:(请求的资源不支持 http 方法"POST"。



当我尝试在 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 :可能是最后一段(模型类中的获取/帖子,而不是在控制器中(是问题的根本原因!

最新更新