[英]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.