2017-10-09 75 views
-1

在我的Web API應用程序中,我想傳遞多個條件以過濾掉數據庫中的數據。這些條件將從UI傳遞。如何在Web API中傳遞單個對象而不是多個參數C#

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

所以,我怎麼能結合這3個參數爲單一對象,並在網頁API使用獲得C#方法

+0

怎麼樣?這完全取決於Web API如何接受參數。您需要向我們展示Web API的代碼以及您如何調用Web API的代碼。 –

回答

1

您可以創建一個模型類,並用它作爲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

-2

在找你不能通過單一的對象,爲此,你需要方法轉換成POST方法。 WebApi通過FormFactory和JSON Factory接受數據。這兩個將請求數據轉換爲僅用於發佈的對象而不用於GET。對於GET,我們只需要與方法輸入參數一樣的參數。您也可以檢查模型活頁夾遵循相同的方法。

+0

這並不完全回答這個問題。您可以通過評論分享這些信息。 –

+0

@VijayRaheja我只想在GET中做到這一點,有沒有其他選擇? –

+0

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

0

您可以在一個類中添加所有這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://stackoverflow.com/questions/978061/http-get-with-request-body爲什麼您儘管可以,但不應該這樣做。 – sprinter252