Ошибка Web Api MVC: (Запрошенный ресурс не поддерживает http-метод 'POST'.) - PullRequest
0 голосов
/ 20 мая 2019

при попытке добавить какое-либо значение в методе 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);
    }

Метод Get Of Department класс:

public IEnumerable<Department> Get() {

        var a = db.Department.Include(e => e.Employee).ToList();
        return a;
        //return db.Department.Include(item => item.Employee).ToList();

    }

1 Ответ

1 голос
/ 20 мая 2019

То, что вы вызываете метод Post, не означает, что он примет метод HTTP POST. Вам нужно украсить атрибутом [HttpPost].

GET является значением по умолчанию; так что не нужно украшать методы Get - но я считаю, что было бы неплохо также поставить [HttpGet].

Обратите внимание, что вы, вероятно, получите другие ошибки, касающиеся представленных данных; но, по крайней мере, система найдет метод, который ответит на ваш запрос ...

Еще одно замечание - очень необычно размещать методы HTTP в классах моделей - вот для чего у вас есть контроллеры. Таким образом, вы даже не сможете украсить методы Get / Post, если они действительно в классах Department / Employee

ОБНОВЛЕНИЕ : Вероятно, последний абзац (Get / Post в классе Model, а не в контроллере) является основной причиной проблемы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...