回到目录

对一MVC来说,它有Controller和Action,其中Action用来为页面提供数据和相关逻辑,并最后将页面渲染出来,而有些action是需要一些参数的,如文章的最终页,可能需要一个ID,而这个ID通常是和某个链接集成在一起的,不需要浏览者手动在URL上改,而有些被称为无聊的用户或者马虎的程序员就把ID参数忽略了,这时,我们的action一般是直接抛出Exception,而这对于一个页面来说,并不是很优雅,对于一个WEB请求,应该返回一个HttpStatusCodeResult的状态结果,这个对象在WebApi中使用的比较频繁.

HttpStatusCodeResult对象结构如下

// 摘要:
// 提供一种用于返回带特定 HTTP 响应状态代码和说明的操作结果的方法。
public class HttpStatusCodeResult : ActionResult
{
// 摘要:
// 使用状态代码初始化 System.Web.Mvc.HttpStatusCodeResult 类的新实例。
//
// 参数:
// statusCode:
// 状态代码。
public HttpStatusCodeResult(HttpStatusCode statusCode);
//
// 摘要:
// 使用状态代码初始化 System.Web.Mvc.HttpStatusCodeResult 类的新实例。
//
// 参数:
// statusCode:
// 状态代码。
public HttpStatusCodeResult(int statusCode);
//
// 摘要:
// 使用状态代码和状态说明初始化 System.Web.Mvc.HttpStatusCodeResult 类的新实例。
//
// 参数:
// statusCode:
// 状态代码。
//
// statusDescription:
// 状态说明。
public HttpStatusCodeResult(HttpStatusCode statusCode, string statusDescription);
//
// 摘要:
// 使用状态代码和状态说明初始化 System.Web.Mvc.HttpStatusCodeResult 类的新实例。
//
// 参数:
// statusCode:
// 状态代码。
//
// statusDescription:
// 状态说明。
public HttpStatusCodeResult(int statusCode, string statusDescription); // 摘要:
// 获取 HTTP 状态代码。
//
// 返回结果:
// HTTP 状态代码。
public int StatusCode { get; }
//
// 摘要:
// 获取 HTTP 状态说明。
//
// 返回结果:
// HTTP 状态说明。
public string StatusDescription { get; } // 摘要:
// 通过从 System.Web.Mvc.ActionResult 类继承的自定义类型,启用对操作方法结果的处理。
//
// 参数:
// context:
// 用于执行结果的上下文。上下文信息包括控制器、HTTP 内容、请求上下文和路由数据。
public override void ExecuteResult(ControllerContext context);
}

HttpStatusCode是一个枚举类型,我们经常见到了404,500等HTTP请求码,都可以在这里枚举里找到

    // 摘要:
// 包含为 HTTP 定义的状态代码的值。
public enum HttpStatusCode
{
// 摘要:
// 等效于 HTTP 状态 100。 System.Net.HttpStatusCode.Continue 指示客户端可能继续其请求。
Continue = ,
//
// 摘要:
// 等效于 HTTP 状态 101。 System.Net.HttpStatusCode.SwitchingProtocols 指示正在更改协议版本或协议。
SwitchingProtocols = ,
//
// 摘要:
// 等效于 HTTP 状态 200。 System.Net.HttpStatusCode.OK 指示请求成功,且请求的信息包含在响应中。 这是最常接收的状态代码。
OK = ,
//
// 摘要:
// 等效于 HTTP 状态 201。 System.Net.HttpStatusCode.Created 指示请求导致在响应被发送前创建新资源。
Created = ,
//
// 摘要:
// 等效于 HTTP 状态 202。 System.Net.HttpStatusCode.Accepted 指示请求已被接受做进一步处理。
Accepted = ,
//
// 摘要:
// 等效于 HTTP 状态 203。 System.Net.HttpStatusCode.NonAuthoritativeInformation 指示返回的元信息来自缓存副本而不是原始服务器,因此可能不正确。
NonAuthoritativeInformation = ,
//
// 摘要:
// 等效于 HTTP 状态 204。 System.Net.HttpStatusCode.NoContent 指示已成功处理请求并且响应已被设定为无内容。
NoContent = ,
//
// 摘要:
// 等效于 HTTP 状态 205。 System.Net.HttpStatusCode.ResetContent 指示客户端应重置(或重新加载)当前资源。
ResetContent = ,
//
// 摘要:
// 等效于 HTTP 状态 206。 System.Net.HttpStatusCode.PartialContent 指示响应是包括字节范围的 GET
// 请求所请求的部分响应。
PartialContent = ,
//
// 摘要:
// 等效于 HTTP 状态 300。 System.Net.HttpStatusCode.MultipleChoices 指示请求的信息有多种表示形式。
// 默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 标头的内容。
MultipleChoices = ,
//
// 摘要:
// 等效于 HTTP 状态 300。 System.Net.HttpStatusCode.Ambiguous 指示请求的信息有多种表示形式。 默认操作是将此状态视为重定向,并遵循与此响应关联的
// Location 标头的内容。
Ambiguous = ,
//
// 摘要:
// 等效于 HTTP 状态 301。 System.Net.HttpStatusCode.MovedPermanently 指示请求的信息已移到 Location
// 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。
MovedPermanently = ,
//
// 摘要:
// 等效于 HTTP 状态 301。 System.Net.HttpStatusCode.Moved 指示请求的信息已移到 Location 头中指定的
// URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
Moved = ,
//
// 摘要:
// 等效于 HTTP 状态 302。 System.Net.HttpStatusCode.Found 指示请求的信息位于 Location 头中指定的
// URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
Found = ,
//
// 摘要:
// 等效于 HTTP 状态 302。 System.Net.HttpStatusCode.Redirect 指示请求的信息位于 Location 头中指定的
// URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求将使用 GET 方法。
Redirect = ,
//
// 摘要:
// 等效于 HTTP 状态 303。 作为 POST 的结果,System.Net.HttpStatusCode.SeeOther 将客户端自动重定向到
// Location 头中指定的 URI。 用 GET 生成对 Location 标头所指定的资源的请求。
SeeOther = ,
//
// 摘要:
// 等效于 HTTP 状态 303。 作为 POST 的结果,System.Net.HttpStatusCode.RedirectMethod 将客户端自动重定向到
// Location 头中指定的 URI。 用 GET 生成对 Location 标头所指定的资源的请求。
RedirectMethod = ,
//
// 摘要:
// 等效于 HTTP 状态 304。 System.Net.HttpStatusCode.NotModified 指示客户端的缓存副本是最新的。 未传输此资源的内容。
NotModified = ,
//
// 摘要:
// 等效于 HTTP 状态 305。 System.Net.HttpStatusCode.UseProxy 指示请求应使用位于 Location 头中指定的
// URI 的代理服务器。
UseProxy = ,
//
// 摘要:
// 等效于 HTTP 状态 306。 System.Net.HttpStatusCode.Unused 是未完全指定的 HTTP/1.1 规范的建议扩展。
Unused = ,
//
// 摘要:
// 等效于 HTTP 状态 307。 System.Net.HttpStatusCode.RedirectKeepVerb 指示请求信息位于 Location
// 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求还将使用
// POST 方法。
RedirectKeepVerb = ,
//
// 摘要:
// 等效于 HTTP 状态 307。 System.Net.HttpStatusCode.TemporaryRedirect 指示请求信息位于 Location
// 头中指定的 URI 处。 接收到此状态时的默认操作为遵循与响应关联的 Location 头。 原始请求方法为 POST 时,重定向的请求还将使用
// POST 方法。
TemporaryRedirect = ,
//
// 摘要:
// 等效于 HTTP 状态 400。 System.Net.HttpStatusCode.BadRequest 指示服务器未能识别请求。 如果没有其他适用的错误,或者不知道准确的错误或错误没有自己的错误代码,则发送
// System.Net.HttpStatusCode.BadRequest。
BadRequest = ,
//
// 摘要:
// 等效于 HTTP 状态 401。 System.Net.HttpStatusCode.Unauthorized 指示请求的资源要求身份验证。 WWW-Authenticate
// 头包含如何执行身份验证的详细信息。
Unauthorized = ,
//
// 摘要:
// 等效于 HTTP 状态 402。 保留 System.Net.HttpStatusCode.PaymentRequired 以供将来使用。
PaymentRequired = ,
//
// 摘要:
// 等效于 HTTP 状态 403。 System.Net.HttpStatusCode.Forbidden 指示服务器拒绝满足请求。
Forbidden = ,
//
// 摘要:
// 等效于 HTTP 状态 404。 System.Net.HttpStatusCode.NotFound 指示请求的资源不在服务器上。
NotFound = ,
//
// 摘要:
// 等效于 HTTP 状态 405。 System.Net.HttpStatusCode.MethodNotAllowed 指示请求的资源上不允许请求方法(POST
// 或 GET)。
MethodNotAllowed = ,
//
// 摘要:
// 等效于 HTTP 状态 406。 System.Net.HttpStatusCode.NotAcceptable 指示客户端已用 Accept 头指示将不接受资源的任何可用表示形式。
NotAcceptable = ,
//
// 摘要:
// 等效于 HTTP 状态 407。 System.Net.HttpStatusCode.ProxyAuthenticationRequired 指示请求的代理要求身份验证。
// Proxy-authenticate 头包含如何执行身份验证的详细信息。
ProxyAuthenticationRequired = ,
//
// 摘要:
// 等效于 HTTP 状态 408。 System.Net.HttpStatusCode.RequestTimeout 指示客户端没有在服务器期望请求的时间内发送请求。
RequestTimeout = ,
//
// 摘要:
// 等效于 HTTP 状态 409。 System.Net.HttpStatusCode.Conflict 指示由于服务器上的冲突而未能执行请求。
Conflict = ,
//
// 摘要:
// 等效于 HTTP 状态 410。 System.Net.HttpStatusCode.Gone 指示请求的资源不再可用。
Gone = ,
//
// 摘要:
// 等效于 HTTP 状态 411。 System.Net.HttpStatusCode.LengthRequired 指示缺少必需的 Content-length
// 头。
LengthRequired = ,
//
// 摘要:
// 等效于 HTTP 状态 412。 System.Net.HttpStatusCode.PreconditionFailed 指示为此请求设置的条件失败,且无法执行此请求。
// 条件是用条件请求标头(如 If-Match、If-None-Match 或 If-Unmodified-Since)设置的。
PreconditionFailed = ,
//
// 摘要:
// 等效于 HTTP 状态 413。 System.Net.HttpStatusCode.RequestEntityTooLarge 指示请求太大,服务器无法处理。
RequestEntityTooLarge = ,
//
// 摘要:
// 等效于 HTTP 状态 414。 System.Net.HttpStatusCode.RequestUriTooLong 指示 URI 太长。
RequestUriTooLong = ,
//
// 摘要:
// 等效于 HTTP 状态 415。 System.Net.HttpStatusCode.UnsupportedMediaType 指示请求是不支持的类型。
UnsupportedMediaType = ,
//
// 摘要:
// 等效于 HTTP 状态 416。 System.Net.HttpStatusCode.RequestedRangeNotSatisfiable 指示无法返回从资源请求的数据范围,因为范围的开头在资源的开头之前,或因为范围的结尾在资源的结尾之后。
RequestedRangeNotSatisfiable = ,
//
// 摘要:
// 等效于 HTTP 状态 417。 System.Net.HttpStatusCode.ExpectationFailed 指示服务器未能符合 Expect
// 头中给定的预期值。
ExpectationFailed = ,
//
UpgradeRequired = ,
//
// 摘要:
// 等效于 HTTP 状态 500。 System.Net.HttpStatusCode.InternalServerError 指示服务器上发生了一般错误。
InternalServerError = ,
//
// 摘要:
// 等效于 HTTP 状态 501。 System.Net.HttpStatusCode.NotImplemented 指示服务器不支持请求的函数。
NotImplemented = ,
//
// 摘要:
// 等效于 HTTP 状态 502。 System.Net.HttpStatusCode.BadGateway 指示中间代理服务器从另一代理或原始服务器接收到错误响应。
BadGateway = ,
//
// 摘要:
// 等效于 HTTP 状态 503。 System.Net.HttpStatusCode.ServiceUnavailable 指示服务器暂时不可用,通常是由于过多加载或维护。
ServiceUnavailable = ,
//
// 摘要:
// 等效于 HTTP 状态 504。 System.Net.HttpStatusCode.GatewayTimeout 指示中间代理服务器在等待来自另一个代理或原始服务器的响应时已超时。
GatewayTimeout = ,
//
// 摘要:
// 等效于 HTTP 状态 505。 System.Net.HttpStatusCode.HttpVersionNotSupported 指示服务器不支持请求的
// HTTP 版本。
HttpVersionNotSupported = ,
}

让我们在Action中使用它,看一下程序修改后的样式吧

    public  ActionResult Details(int? id)
{
//参数不正确,直接抛出对应的HttpStatusCodeResult结果
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
} //你的逻辑
return View();
}

结果截图

aaarticlea/png;base64,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" alt="" />

在进行MVC4之后,它同样支持异步Action,即它在独立的线程中运行,而不会使用主WEB线程阻塞

   public async Task<ActionResult> Details(int? id)
{
//参数不正确,直接抛出对应的HttpStatusCodeResult结果
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
} //你的逻辑
return View();
}

对于MVC的研究,我们还在继续,等待MVC5的带来!

回到目录

爱上MVC~为非法进行Action的用户提供HttpStatusCodeResult的更多相关文章

  1. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...

  2. asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别

    转载自 :  <asp.net mvc @Html.Partial @Html.Action @Html.RenderPartial @Html.RenderAction区别> 先复制过来 ...

  3. [转]ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)

    有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器.Action过滤器是自定义的Attributes,用来标记添 ...

  4. ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)

    原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/09/1307660.html 有时候你想在调用action方法之前或者action方法之后处 ...

  5. ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据

    在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...

  6. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_five.html 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会 ...

  7. 爱上MVC3~在控制器或Action上动态设定模板页(Layout)

    回到目录 很多境况下,我们需要设置自己模块的layout,即它的布局页面,在MVC2中叫它模板页面,你可以在return view方法时设置它,当然,这不是一种好方法,因为我不想每个action都去设 ...

  8. Asp.Net Mvc - 在OnResultExecut* 拦截Action返回的HTML

    在Asp.Net MVC项目中通过重写ActionFilterAttribute中的方法,我们就可以在轻松的在Action方法执行前后做一些特殊的操作如:[身份认证.日志记录.内容截取等]. 但是我们 ...

  9. ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost

    我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...

随机推荐

  1. CAD二次开发

    用C#有一段时间了,由于单位需要,开始接触CAD二次开发,网上一搜,加入CAD开发的群,零零碎碎看了一些文章和博客,没有系统地的知识,能解决一些小问题.最近开始系统学习,再次推荐两本书,一本事纸质版的 ...

  2. SVN版本控制系统

    SVN 版本控制系统 1.SVN作用 防止代码丢失 : 因为没有哪个项目能够一次性开发完成 代码版本回退 : 你可以在开发过程中找到以前上传到服务器上面的所有版本 多人代码整合 : 公司中多个人开发同 ...

  3. 实现十进制无符号整数m到十六进制数的转换功能

    /*利用顺序栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能.*//******************************** ...

  4. 解决 IE 6/7 中console对象兼容性问题

    话不多说,直接上代码 (function (){ //创建空console对象,避免JS报错 if(!window.console) window.console = {}; var console ...

  5. Tomcat部署遇到的问题

    项目服务端:Tomcat6.0.41 选用数据库:Mysql5.6.17 JDK环境:1.6.37 运行系统:Windows server 2008(64bit) ================== ...

  6. 最小和(min)

    题目描述: N 个数排成一排,你可以任意选择连续的若干个数,算出它们的和.问该如何选择才能 使得和的绝对值最小. 如:N=8 时,8个数如下: 1    2    3     4    5    6 ...

  7. java7笔记

    1 switch case 增加字符串类型,原理根据字符串hashcode以及string.equal比较2 数值字面量改进 新增二进制数值字面量 0b000004,在数值中间新增下划线方便阅读200 ...

  8. PL/SQL通过存储过程为相同数据添加序号

    在Oracle数据库中存有一串数据(Ori_Seq),数据包含不等量重复: 为方便查看与管理,现希望添加一字段(New_Seq),在原有数据的末尾为其添加一串序号,相同数据序号从小到大排列,序号长度为 ...

  9. [原] XAF 添加日期筛选下拉选择

    1.ListView 添加日期筛选下拉选择,选择指定,可指定日期范围 2.Code using DevExpress.Data.Filtering; using DevExpress.ExpressA ...

  10. [原] XAF 如何启用ListView Top N records 提升用户使用体验

    為了提升用戶使用體驗,特擴展此功能(來源與Xafari Framework).1.可在模型編輯器中設置是否啓用,默認啓用.2.DataAccessMode為Client模式才啓用.其它模式自動關閉.3 ...