在webapi中,請求主體(httpcontent)只能被讀取一次,不被快取,只能向前讀取的流。
舉例子說明:
服務端方法: void action(int id, string name) // 所有引數都是簡單型別,因而都將來自url
服務端方法: void action([fromuri] int id, [fromuri] string name) // 同上
void action([frombody] string name); //[formbody]特性顯示標明讀取整個body為乙個字串作為引數
類定義:
public class customer
public int age
}服務端方法: void action(int id, customer c) // 引數id從query string中讀取,引數c是乙個複雜customer物件類戲,通過formatter從body中讀取
服務端方法: void action(customer c1, customer c2) // 出錯!多個引數都是複雜型別,都試圖從body中讀取,而body只能被讀取一次
服務端方法: void action([fromuri] customer c1, customer c2) // 可以!不同於上面的action,複雜型別c1將從url中讀取,c2將從body中讀取
4.modelbinder方式:
void action([modelbinder(mycustombinder)] sometype c) // 標示使用特定的model binder來解析引數
[modelbinder(mycustombinder)] public class sometype // 通過給特定型別sometype宣告標註[modelbidner(mycustombinder)]特性使得所有sometype型別引數應用此規則
void action(sometype c) // 由於c的型別為sometype,因而應用sometype上的特性決定其採用model binding
總結:1. 預設簡單引數都通過url引數方式傳遞,例外:
1.1 如果路由中包含了id引數,則id引數通過路由方式傳遞;
1.2 如果引數被標記為[frombody],則可以該引數可以為簡單引數,客戶端通過post方式傳遞:$.ajax(url, '=value'),或者$.ajax(});
2. 預設複雜引數(自定義實體類)都通過post方式傳遞,例外:
2.1 如果引數值被標記為[fromuri], 則該引數可以為複雜引數;
3. 被標記為[frombody]的引數只允許出現一次, 被標記為[fromuri]的引數可以出現多次,如果被標記為[fromuri]的引數是簡單引數,該標記可以去掉。
WebApi中的引數傳遞
webapi引數傳遞總結 在webapi中,請求主體 httpcontent 只能被讀取一次,不被快取,只能向前讀取的流。舉例子說明 服務端方法 void action int id,string name 所有引數都是簡單型別,因而都將來自url 服務端方法 void action fromuri...
傳遞多個引數並獲取Web API的資料
近段時間學習web api覺得非常有意思。預設的路由情況之下,獲取資料時,它不必指定action操作名。還有另外感想,就是自從學習asp.net mvc之後,加上jquery,讓insus.net已經慢慢遠離開asp.net,想起了那曾經得心應手的web控制項.前兩篇 asp.net mvc的web...
傳遞多個引數並獲取Web API的資料
近段時間學習web api覺得非常有意思。預設的路由情況之下,獲取資料時,它不必指定action操作名。還有另外感想,就是自從學習asp.net mvc之後,加上jquery,讓insus.net已經慢慢遠離開asp.net,想起了那曾經得心應手的web控制項.前兩篇 asp.net mvc的web...