Web Api MVC错误:(请求的资源不支持http方法'POST'。)

时间:2019-05-20 19:21:18

标签: asp.net-mvc asp.net-web-api

当我尝试在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();

    }

1 个答案:

答案 0 :(得分:1)

仅因为您调用方法Post,并不意味着它将接受HTTP POST方法。您需要使用[HttpPost]属性进行修饰。

GET是默认设置;因此您不必不必装饰Get方法-但我认为放置[HttpGet]也是一种很好的风格。

请注意,关于提交的数据,您可能还会遇到其他错误;但至少系统会找到一种方法来响应您的请求...

更多说明-将HTTP方法放在模型类中是非常不寻常的-这就是您要使用的控制器。因此,如果它们在Department / Employee类中是真正

,则您甚至可能无法修饰Get / Post方法。

更新:可能最后一段(在Model类中而不是在控制器中为Get / Post)是问题的根本原因!