2017-09-03 80 views
2

我有使用Web API MVC Web服務方法,我有一個方法「創建」,這個接收兩個參數(Object),但是當我嘗試調用從SOAP UI表明,該方法這個錯誤:如何在web api服務中發送兩個或更多參數?

{ "message": "Error.", "exceptionMessage": "No se pueden enlazar varios parámetros ('modelPerson' y 'modelCategory') al contenido de la solicitud.", "exceptionType": "System.InvalidOperationException", "stackTrace": " en System.Web.Http.Controllers.HttpActionBinding.ExecuteBindingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)\r\n en System.Web.Http.Controllers.ActionFilterResult. }

我控制器API:

[HttpPost] 
    [Route("Create")] 
    public IHttpActionResult Create(Person modelPerson, Category modelCategory) 
    { 
     try 
     { 
      new PersonBLL().Create(modelPerson, modelCategory); 
      return Ok("success"); 
     } 
     catch (Exception ex) 
     { 
      return BadRequest(ex.Message); 
     } 
    } 

在肥皂UI POST方法:

{ 
    "name": "pepe", 
    "age": 23, 
    "address" : "xxxx 233" 
    "pets":{        //-> person model 
    "id": 3002, 
    "alias" : "vovi" 
    } 
} 
, 
{ 
    "id" : 101       //category model (i need only id) 
} 

但是,如果我只發送一個參數(modelPerson或categoryPerson),呼叫作品完美,BU t使用兩個參數不起作用:/

+0

二者結合起來一個班級中的「人物」和「類別」應該有所幫助 –

回答

1

這是Web API不允許的。

相反,你可以使用一個包裝兩個單個對象:

public class CreateParameters 
{ 
    public Person Person { get; set; } 
    public Category Category { get; set; } 
} 

[HttpPost] 
[Route("Create")] 
public IHttpActionResult Create(CreateParameters parameters) 
{ 
    try 
    { 
     new PersonBLL().Create(parameters.Person, parameters.Category); 
     return Ok("success"); 
    } 
    catch (Exception ex) 
    { 
     return BadRequest(ex.Message); 
    } 
} 

,看起來像這樣的請求:

{ 
    "Person": { 
     "name": "pepe", 
     "age": 23, 
     "address": "xxxx 233", 
     "pets": { 
      "id": 3002, 
      "alias": "vovi" 
     } 
    }, 
    "Category": { 
     "id": 101 
    } 
} 
相關問題