C# ASP.NET WebAPI 中的引數繫結是什麼?


繫結是當 Web API 呼叫控制器操作方法時為引數設定值的過程。

具有不同型別引數的 Web API 方法以及如何自定義繫結過程。

如果引數是簡單型別,例如 int、bool、double 等,Web API 會嘗試從 URI(從路由資料或查詢字串中)獲取值。

如果引數是複雜型別,例如 Customer、Employee 等,則 Web API 框架會嘗試從請求正文中獲取值。

我們可以使用 [FromBody] 和 [FromUri] 屬性更改引數繫結過程的此預設行為。

FromUri

如果引數為簡單型別,則 Web Api 會嘗試從 URI 獲取值

.NET 原生型別,如 double、DateTime、GUID 字串,任何可以從 String 型別轉換的型別

示例

public Student Get(int id){}

FromBody

如果引數為複雜型別,則 Web Api 將嘗試從訊息正文繫結值。

示例

Public Student Post(Employee employee){}

[FromUri]

要強制 Web API 從 URI 讀取複雜型別,請將 [FromUri] 屬性新增到引數

使用 [FromUri] 屬性強制 Web Api 從 QueryString 獲取複雜型別的值。

示例

public Student Get([FromUri] Employee employee)
public HttpResponseMessage Get([FromUri] Employee employee) { ... }

[FromBody]

使用 [FromBody] 屬性從請求正文獲取原始型別的值,與預設值相反

否,不允許在一個操作中使用多個 FormBody。

要強制 Web API 從請求正文讀取簡單型別,請新增 [FromBody]

在此示例中,Web API 將使用媒體型別格式化程式從請求正文讀取 name 的值

示例

public Student Post([FromBody] string name]){...}
public HttpResponseMessage Post([FromBody] string name) { ... }

更新於: 2020-08-19

2K+ 閱讀量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.