如何在WEB API中将多个模型作为参数传递

Posted

技术标签:

【中文标题】如何在WEB API中将多个模型作为参数传递【英文标题】:How to pass multiple model as parameter in WEB API 【发布时间】:2021-01-28 05:07:16 【问题描述】:

谁能帮我将多个模型作为参数传递给 WEB API 中的请求内容?

我有 2 个不同的模范学生和员工

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)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"

谁能帮帮我?

【问题讨论】:

【参考方案1】:
public class StudentEmployeModel

 public Student Studentsget;set;


public Employee Employeesget;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 发送

【讨论】:

嗨,Mehmet,感谢您的宝贵回复,您能否告诉我如何在请求正文中将 StudentEmployeModel 作为 JSON 传递时在 Student 和 Employees 模型中设置值? 我把答案写在评论里了【参考方案2】:

之后你可以在学生类中调用Empolyee类,然后你可以在api中调用多个模型调用

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

【讨论】:

谢谢你,Divyanshi 的宝贵答案,你的解决方案也有效,但我可以接受所有人的答案,所以我也赞成你的答案。谢谢。

以上是关于如何在WEB API中将多个模型作为参数传递的主要内容,如果未能解决你的问题,请参考以下文章

如何在 API 调用中将输入值作为参数传递?

如何使用 MVC Web Api GET 将对象作为参数传递

如何将类型的对象作为参数传递给Web Api Get / Post方法

如何在 Python 中将方法作为参数传递

在 Django 中将文件路径作为 URL 参数传递

如何将 URL 中的数组作为参数传递给 Promise.all