ASP Action函數 如何接收client傳遞的數據(編輯中。。。)

參看連接:http://www.javashuo.com/article/p-tqwpxeug-p.htmlhtml

我這裏總結一下,Action的參數的來源比較多ios

1.urljson

2.路由設定數組

3.post中的內容被自動映射(form格式,json格式均可以)服務器

 若是參數的類型是可爲空類型,那麼當不傳遞這個參數時,也能正確執行函數。可是,若是是int 這種,不能爲空的類型,就會出現調用錯誤。這時候,須要使用int ? 類型。restful

 

對於post 請求 ,action 的參數自動映射與 request 的content-type 密切相關, 可是不管哪一種post請求,request的InputStream屬性必定保存着post過來的數據。 app

例子1:框架

post 一個 content-type 爲 application/json 的json到服務器端,json內容以下:函數

{"name":"aaaa","Meetings":"1","ImageBase64":"BBBCCCCC"}

服務器結果以下:post

 能夠看到,json中的key都被映射到了同名變量或屬性中。hcpDto的 Name  和 name 的值,都來自json中的name,忽略大小寫區別。能夠簡單地理解成,只要名稱和類型容許,就會進行相應的映射。

可是用在request 的 form屬性和 params屬性中,沒有出現相應的值,參見下圖

 

例子1.2,若是post一個複雜的json對象

{"HCPInsertDto":{"name":"aaaa","Meetings":"1"},"ImageBase64":"BBBCCCCC"}

結果以下圖:

 

 

 name的值沒法取到,也就是說,默認是沒法解析json中第二層的屬性。那麼爲何有的框架能夠作到多層json的解析呢?????????????????????

 

 

例子2:

post 一個 content-type 爲 application/x-www-form-urlencoded的數據到服務器,數據內容以下:

name=aaa&imagebase64=bbbbbbbb

 服務器截圖以下:

同時能夠注意到,以 application/x-www-form-urlencoded 形式提交的數據,能夠在request對象中的 form屬性和params屬性中都有值:

 

例子3

post 一個 content-type 爲 multipart/form-data 的

首先,這個post的data格式,和 content-type的內容有些特殊,最好使用一個form表單構建,再粘貼到 restful client 裏實驗,截圖以下:

結果以下:

能夠看到,參數能夠正確映射

 

 

 例子4 在一些ios之類的前臺庫裏,能夠傳遞一個數組,我用restful client模擬了一下這種狀況

 代碼以下:

------WebKitFormBoundaryTmMzofe8Ic12TbyA
Content-Disposition:form-data;name="attendees[]"

aaaa
------WebKitFormBoundaryTmMzofe8Ic12TbyA
Content-Disposition:form-data;name="attendees[]"

bbbb
------WebKitFormBoundaryTmMzofe8Ic12TbyA--

屢次傳遞一樣的name屬性,後臺就會把這些數據處理爲一個數組。注意,這裏的[] 符號能夠省略,server一樣能夠解析。

解析結果以下:

相關文章
相關標籤/搜索