在我的Web API应用程序中,我想传递多个条件来过滤掉数据库中的数据。这些条件将从UI传递。
string dateRangeType = "XYZ", string startDate = "", string endDate = ""
那么如何将这3个参数组合成单个对象并在C#中使用Web API GET 方法
答案 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,它遵循相同的方法。