下載了asp.net mvc 4的源碼看了看,沒怎么看清楚。不過個人覺得MVC4 beta中Web API這個是比較不錯的,雖然說它是往傳統回歸。 web api最好的莫過於它更加適合使用jquery的ajax調用。
我這里主要給大家說明下如何在asp.net mvc 3中借鑒Web API的特性來讓AJAX調用更加酷。
首先給大家看個例子,傳統的asp.net mvc 3中異步調用的Response:
Action如下:
相應的jquery ajax請求代碼(只是簡單的代碼,):
我們來運行看一下Response的信息:
Response Header信息:
狀態碼是200 OK。綠色,
返回的JSON數據:
現在我們想使用http.net定義好的Status來根據不同的操作來返回不同的狀態碼,比如當創建一條記錄成功時,我們返回201成功,當沒有權限時,我們返回沒有權限。
現在我們試着修改Action如下:
只是添加一行代碼: Response.StatusCode,也就是說這個Action是創建人員信息,當信息創建成功時,返回給瀏覽器說:Hi,創建成功了。以前你可能是去通過jquery的ajaxSuccess來去進行后續操作,好吧,現在你可以通過判斷客戶端獲得的狀態碼來判斷是該進行哪步操作了。
試着運行下:
這時你可以看到我們得到的狀態碼是201,對應的Response Header的信息:
它也不再是200 OK,而是201 Created。
在Asp.net http.net命名空間中,定義了很多Status Code:
這里你可能會想到,對於AJAX請求這種方式,安全方面就可以使用這種方式來統一處理啦。 當一個請求沒有權限時,我們使用一個Filter來告訴它,Hi 你這個請求不可以,返回上圖紅色框內的狀態碼:400。那么對應的如果是Web請求,你就可以不冤枉它的把這個請求者轉到登陸頁面,巴拉巴拉巴拉。。。
首先我們需要定義一個Filter:
在PostPerson的Action中使用這個Filter:
編譯后,運行:
可以看到,Status Code是400,Bad Request。 對應的Response當然也不會有數據啦,我們可以在jquery的ajax請求中,判斷當status code是400時,location.href=”any where ha”:
Cheers