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

问题描述:

在我的Web API应用程序中,我想传递多个条件以过滤掉数据库中的数据。这些条件将从UI传递。如何在Web API中传递单个对象而不是多个参数C#

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

所以,我怎么能结合这3个参数为单一对象,并在网页API使用获得C#方法

+0

怎么样?这完全取决于Web API如何接受参数。您需要向我们展示Web API的代码以及您如何调用Web API的代码。 –

您可以创建一个模型类,并用它作为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

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

+0

这并不完全回答这个问题。您可以通过评论分享这些信息。 –

+0

@VijayRaheja我只想在GET中做到这一点,有没有其他选择? –

+0

@Vijay有没有必要使它POST,Kcs看到我的答案 –

您可以在一个类中添加所有这3个属性,然后传递对象作为参数,然后发布使用身体将做的工作

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

更改数据你行动的签名传递MyContract对象作为与[FromBody]属性参数,再通过数据作为JSON在您的要求的身体像这样 -

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

我们可以做GET吗? –

+0

是的,您可以使用GET传递body参数,理想情况下您应该使用POST,但使用GET也可以使用 –

+0

请参阅https://*.com/questions/978061/http-get-with-request-body为什么您尽管可以,但不应该这样做。 – sprinter252