簡體   English   中英

如何在Web API C#中傳遞單個對象而不是多個參數

[英]How to pass single object instead of multiple parameters in Web API C#

在我的 Web API 應用程序中,我想傳遞多個條件來過濾數據庫中的數據。 這些條件將從 UI 傳遞。

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

那么如何將這 3 個參數組合成單個對象並在 C# 中的 Web API GET方法中使用

您可以創建一個模型類並將其用作 web api 控制器的參數。 例如:

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

Next 在你的 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 以便能夠從查詢參數中讀取引用類型對象,因為默認情況下,操作將嘗試從正文中讀取它。 更多細節在這里

您可以在一個類中添加所有這 3 個屬性,然后將該對象作為參數傳遞,然后使用 body 發布數據即可完成這項工作

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"
}

在 Get 中您不能傳遞單個對象,為此您需要將方法轉換為 POST 方法。 WebApi 通過 FormFactory 和 JSON Factory 接受數據。 這兩個將請求數據轉換為對象,僅用於發布而不是用於 GET。 對於 GET,我們只需要與方法輸入參數一樣單一的參數。 您還可以檢查遵循相同方法的模型綁定器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM