如何在Web API C中传递单个对象而不是多个参数#

时间:2017-10-09 04:52:29

标签: c# rest object asp.net-web-api asp.net-web-api2

在我的Web API应用程序中,我想传递多个条件来过滤掉数据库中的数据。这些条件将从UI传递。

string dateRangeType = "XYZ", string startDate = "", string endDate = ""

那么如何将这3个参数组合成单个对象并在C#中使用Web API GET 方法

3 个答案:

答案 0 :(得分:2)

您可以创建模型类并将其用作Web api控制器的参数。例如:

public class MyDateDTO
{
    public String dateRangeType { get; set; }
    public String startDate { get; set; }
    public String endDate { get; set; }
}

下一步在你的web api控制器中

    [HttpGet]
    public String MyDateAction([FromUri]MyDateDTO dto)//must put FromUri or else 
        //the web api action will try to read the reference type parameter from
        //body
    {
        //your code
    }

另请注意,您必须放置FromUri才能从查询参数中读取引用类型对象,因为默认情况下,操作将尝试从正文中读取它。更多详情here

答案 1 :(得分:0)

您可以在类中添加所有这3个属性,然后将该对象作为参数传递,然后使用body发布数据将完成工作

public class MyContract {
    public string dateRangeType;
    public string startDate;
    public string  endDate;
}

更改操作的签名,以使用[FromBody]属性将MyContract对象作为参数传递,然后在请求正文中将数据作为JSON传递,如下所示 -

{
   dateRangeType: "abc",
   startDate: "2017-09-10",
   endDate: "2017-09-11"
}

答案 2 :(得分:-2)

在Get中你不能传递单个对象,为此你需要将方法转换为POST方法。 WebApi通过FormFactory和JSON Factory接受数据。这两个请求数据转换为对象仅用于发布而不是GET。对于GET,我们只需要与方法输入参数一样的参数。您也可以查看模型Binder,它遵循相同的方法。