如何在asp.net mvc3中使用HttpStatusCode

來源:互聯網
上載者:User

 

 

下載了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

 

 

 

 

 

 

 

 

 

 

 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.