使用多个Put / Post参数测试WebAPI控制器

时间:2016-04-12 14:09:37

标签: json asp.net-web-api

因此,根据各种建议,我更新了我的web api控制器方法,该方法接受来自

的多个复杂参数对象
   //public IHttpActionResult PostCreateCase([FromBody]  ARC.Donor.Business.Case.CreateCaseInput CreateCaseInput, [FromBody]  ARC.Donor.Business.Case.SaveCaseSearchInput SaveCaseSearchInput)

public IHttpActionResult PostCreateCase(JObject jsonObject)
{
}

然后相应地解析它们......

public IHttpActionResult PostCreateCase(JObject jsonObject)
{
    var CreateCaseInput = jsonObject["CreateCaseInput"].ToObject<CreateCaseInput>();
    var SaveCaseSearchInput = jsonObject["SaveCaseSearchInput"].ToObject<SaveCaseSearchInput>();
    ARC.Donor.Service.Case.CaseServices cs = new ARC.Donor.Service.Case.CaseServices();
    var searchResults = cs.createCase(CreateCaseInput, SaveCaseSearchInput);
------
}

但即使在那之后我使用Json对象测试我的控制器

  "CreateCaseInput":[
    {
      "case_nm":"EFG Test",
      "case_desc":"EFG is a test",
      "report_dt" : "04/12/2015"
    }
    ],
   "SaveCaseSearchInput":[
     {
       "firstName" : "Chiranjib",
       "constType" : "IN"
     }
     ]

我仍然在

中获得CreateCaseInput和SaveCaseSearchInput对象
   public IList<ARC.Donor.Business.Case.CreateCaseOutput> createCase(ARC.Donor.Business.Case.CreateCaseInput CreateCaseInput, ARC.Donor.Business.Case.SaveCaseSearchInput SaveCaseSearchInput)
{
.......
}

为null。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

你JSON是错误的,因为它是一个数组,而不是一个对象。

尝试这种方式:

{
    "CreateCaseInput":
      {
        "case_nm":"EFG Test",
        "case_desc":"EFG is a test",
        "report_dt" : "04/12/2015"
      },
    "SaveCaseSearchInput":
      {
        "firstName" : "Chiranjib",
        "constType" : "IN"
      }
}

希望有所帮助:)