Как передать несколько моделей в качестве параметра в ВЕБ-API

#entity-framework #asp.net-web-api #model-view-controller #postman #webapi

#entity-framework #asp.net-web-api #модель-представление-контроллер #почтальон #webapi

Вопрос:

Может кто-нибудь, пожалуйста, помочь мне передать несколько моделей в качестве параметра для содержимого запроса в ВЕБ-API?

У меня есть 2 разных модели Student и Employee

 public class Student
    {
        public int StudentId { get; set; }
        public string StudentName { get; set; }
        public string Branch { get; set; }
    }

    public class Employee
    {
        public int EmployeeId { get; set; }
        public string EmployeeName { get; set; }
        public string Department { get; set; }
    }
 

Я создал API и хочу передать обе эти модели в качестве параметров в моем методе действий InsertTestAPI.

 [HttpPost]
[Route("TestAPI")]

public HttpResponseMessage InsertTestAPI(Student modelStudent, Employee modelEmployee)
{
    // other logical operations
}
 

Когда я передаю эти модели как JSON в теле запроса, я получаю следующую ошибку от Postman.

 {
    "$id": "1",
    "Message": "An error has occurred.",
    "ExceptionMessage": "Can't bind multiple parameters ('modelStudent' and 'modelEmployee') to the request's content.",
    "ExceptionType": "System.InvalidOperationException",
    "StackTrace": "   at System.Web.Http.Controllers.HttpActionBinding.ExecuteBindingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)rn   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()rn--- End of stack trace from previous location where exception was thrown ---rn   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()rn   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)rn   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"
}
 

Кто-нибудь может мне помочь?

Ответ №1:

 public class StudentEmployeModel
{
 public Student Students{get;set;}


public Employee Employees{get;set;}
}
 

Создайте класс StudentEmpendedModel таким образом.

 public HttpResponseMessage InsertTestAPI(StudentEmployeModel model)
{// other logical operations }
 

запрос таким образом

     { "students":   { "studentId":"0", "studentName":"Mehmet", "branch":"software" } ,
 "employees":
 {"employeeId ":0,"employeeName":"Test","department":"IT"} }
 

Таким образом, вы можете отправлять запросы в формате Json

Комментарии:

1. Привет, Мехмет, спасибо за ваш ценный ответ, не могли бы вы сообщить мне, как я могу установить значение в модели Students и Employees, когда я передаю StudentEmployeModel как JSON в теле запроса?

2. Я написал ответ в комментарии

Ответ №2:

После этого вы можете вызвать класс Empolyee в классе student .затем вы можете вызвать вызов нескольких моделей в api

 public class Student
    {
        public int StudentId { get; set; }
        public string StudentName { get; set; }
        public string Branch { get; set; }
        public Employee EmpData {get;set;}
    }
 

Комментарии:

1. Спасибо, Дивьянши, за ваш ценный ответ, ваше решение также работает, но я могу принять ответ для всех, поэтому я также поддержал ваш ответ. Спасибо.