回到目录

对一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. c#下调用dll动态链接库[转]

    C# 调用传统的 API 动态链接库,是.NET开发经常被讨论的问题. 比如有这么一个动态链接库(delphi 语言): library DelphiDLL; uses SysUtils, Class ...

  2. Lessons Learned 1(敏捷项目中的变更影响分析)

    问题/现象: 业务信息流转的某些环节,会向相关人员发送通知邮件,邮件中附带有链接,供相关人员进入察看或处理业务.客户要求邮件中的链接,需要进行限制,只有特定人员才能进入处理或察看.总管想了想,应道没问 ...

  3. echarts异步加载柱状图遇到的错误- Error: Component series. not exists. Load it first.

    今天看了下echarts教程之中的异步加载柱状图,我按照教程中的代码敲出来之后再运行,就报了一个 Error: Component series. not exists. Load it first. ...

  4. Cauchy 级数浓缩判别法

  5. 【线段树】bzoj1756 Vijos1083 小白逛公园

    我们知道,求一段序列的最大子段和是O(n)的,但是这样是显然会超时的. 我们需要一个数据结构来支持修改和计算的操作,对于这种修改一个而查询区间的问题,考虑使用线段树. 在线段树中,除了左端点,右端点, ...

  6. VM12安装OS X10.11步骤及说明

    参考文献: 1. http://www.crsay.com/network/enable-hardware-based-dep.html 2. http://jingyan.baidu.com/art ...

  7. ArcGIS Engine10.2如何安装在 VisualStudio2013 开发环境下

    所谓工欲善其事必先利其器,10.2中的ArcObject SDK for Microsoft .Net Framework只能支持VS2010和VS2012环境. 那么如何在VS2013下安装呢? 准 ...

  8. python学习粘贴

    1. Python通过re模块提供对正则表达式的支持.使用re的一般步骤是先使用re.compile()函数,将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得 ...

  9. OpenMP之数值积分(求圆周率Pi)(sections)

    // Pi.cpp : 定义控制台应用程序的入口点. //求圆周率PI #include "stdafx.h" #include <windows.h> #includ ...

  10. MVC中使用Ueditor

    配置.net mvc4项目使用ueditor编辑器. 1.首先下载Ueditor1.3.6开发版(http://ueditor.baidu.com/website/download.html) 2.将 ...