【问题标题】:webapi httppost sending the parameter as objectwebapi httppost 将参数作为对象发送
【发布时间】:2015-01-08 08:29:23
【问题描述】:

我有一个 webapi 方法作为 httppost,如下所示。我正在尝试使用 提琴手,但我无法获得参数对象。如果我如图所示发送请求,则为空。我做错了什么?

  [ActionName("getCustomerByName")]
    [HttpPost]
    public async Task<List<Customer>> GetcustomerByName(object param)
    {

    }

【问题讨论】:

    标签: c# asp.net-web-api fiddler


    【解决方案1】:

    你期望object param 是什么?

    请求正文 JSON 字符串是否代表 Customer

    如果是,使用Customer 作为类型而不是object 例如

    public async Task<List<Customer>> GetCustomerByName(Customer param)
    

    如果不是,则定义一个与您传递的 JSON 字符串具有相同字段名称的类(任何名称),并使用该类而不是 object 例如

    public class QueryArgs
    {
       public int Id { get; set; }
       // rest of your fields go here
    }
    
    public async Task<List<Customer>> GetCustomerByName(QueryArgs param)
    

    【讨论】:

    • 实际上我使用它的原因是客户对象本身没有不同的属性。但我的问题是一个愚蠢的错字。我刚刚发现我正在编写内容类型而不是内容类型。当我纠正它时它会起作用。 :)
    • @batmaci 很公平,但是在你的 API 上定义明确的类而不是使用object