如何在asp.net mvc3中使用HttpStatusCode

本文介绍如何在ASP.NET MVC3中借鉴WebAPI特性优化AJAX调用,通过使用HTTP状态码来区分不同操作结果,增强安全性及用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载了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如下:

 

image

 

相应的jquery ajax请求代码(只是简单的代码,):

image

 

我们来运行看一下Response的信息:

Response Header信息:

image

 

状态码是200 OK。绿色,Smile 

返回的JSON数据:

image

 

现在我们想使用http.net定义好的Status来根据不同的操作来返回不同的状态码,比如当创建一条记录成功时,我们返回201成功,当没有权限时,我们返回没有权限。

 

现在我们试着修改Action如下:

image

 

只是添加一行代码: Response.StatusCode,也就是说这个Action是创建人员信息,当信息创建成功时,返回给浏览器说:Hi,创建成功了。以前你可能是去通过jquery的ajaxSuccess来去进行后续操作,好吧,现在你可以通过判断客户端获得的状态码来判断是该进行哪步操作了。

 

试着运行下:

image

 

这时你可以看到我们得到的状态码是201,对应的Response Header的信息:

image

 

它也不再是200 OK,而是201 Created。

 

在Asp.net http.net命名空间中,定义了很多Status Code:

image

 

这里你可能会想到,对于AJAX请求这种方式,安全方面就可以使用这种方式来统一处理啦。 当一个请求没有权限时,我们使用一个Filter来告诉它,Hi 你这个请求不可以,返回上图红色框内的状态码:400。那么对应的如果是Web请求,你就可以不冤枉它的把这个请求者转到登陆页面,巴拉巴拉巴拉。。。

 

首先我们需要定义一个Filter:

image

 

在PostPerson的Action中使用这个Filter:

image

 

编译后,运行:

image

 

可以看到,Status Code是400,Bad Request。 对应的Response当然也不会有数据啦,我们可以在jquery的ajax请求中,判断当status code是400时,location.href=”any where ha”:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值