回到目录

对一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,iVBORw0KGgoAAAANSUhEUgAAAcAAAAEZCAIAAACPdmLDAAAThUlEQVR4nO3dvY7cRtqG4Qp1LIoUKOGBDKCjcAWG09Ep6AQKEqBAxigRsNAuFBmoWJkHBhwQipwObAiwwtqgyGL9s/qd6fnpvi9wv+1pVheLbPLhS7JXn3IAABH10AMAgKeKAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIQIUAAQIkABQOiJBehXpb4qVf6ZvZ+941+X032OHMDpeWIhMh6g/bkE6K6bC/VVqa/PX//70CMBHq3dELn+63l2ICXv/Pv6eau+u3593Z+7dZVMFzft0YRmN7/+ultU3kWAXs3VUV1dxAudr7IPdefmSzik8Z4l9SqbWtpVI0DvcEFHtu5jF7fbskDNbQN0swZBPQLqc7OuQp7WM/SgiCybHX4JH+f7NqT1rODfWRI2rFd/buagxiPWXFtHu252QbSNBegdLOjICFAc0aMK0F4nh16k357PiOvnz9MAzQ/INGj6czMHNT5gzNtor19fJ7lWlPzpsipXDIMBGkr1qH3a2/O/omhtL2h/m7S7zdduvirWlxjFnXqkAVotZOIjoXUJH+fpV6X+ePFiZCuU/FEa3YVoRVI4np//db03N3NQ4zGNwrDaYb7xs88eVoGGAE2Db1m1ZRhpz/UF7QRou9tlAGFj3lz4nY0KFEd00GVstzY5cgXqHVRphgDtRG2dH8bFlcuvsrfU20YYh1R/buagxumt0tZdjuqtyVZ2JKtWpPlBAZpH/9JbWJHo7sTOgroBOtBtsecQoDiiR1WBNnqOxMG3m4llBTqWv/6wzKLhoQN0TFEYlreVyzPixY2rfEEHP0SKW+Zxv0zXr6/3FtQN0E632+O++M1Kh8AdehwBOlAuZc3CJXzWIPuIIEA7vxyoFlCP+hK+O7zk3FBk93gFGrbY0IrsLKgXoDvbZ1275PsiQHFMjyNAhx+bxJk4GKCtNByrRosK9FYPkRoV9/EeIqWhk61L9RL+wArUd7WdCJePNy+odxc0cgm/+0OF+H4oAYojevIB2gnErAKt1q27igCt//aoKL6qc/P17XclsPNwPK3+6iGYPVMafIi0VX/1J0V+JElJ2FhQ/1lWs9uriy0i05zlfxGA43mSAVqNwmqAhjfjuQdlaBmg8erUV7k5t7a+9/tD+vgGRfMXWvE0+hQ+XpGswg1TuPTuL2hnGPVu89uj8WV+dHuUOhR36on9zxlbmVj+6bq/Ej20DsXxUCHi6XpiIVIWkp1L+PIjI+/jnhGgeLpIEDwwAhRPFwEKAEIEKAAIEaAAIESAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACBGgACBEgAKA0H6AKqVU9K8WhT/j98vXscEOD3qnM86RxgBwe3cToK33xeGolLLWllncCuXd5QLAnRsN0E6iVduXr11RnGqtyzc7Y2gN7KCcBYC7MnpdXL7TrwSrKZZlq9a6k7at3g4KWQA4nqEAVd0L6tBsmqaR3rKey7llb/2wjl/HVe3uygPAbRx8D7TTbJqmTsi6xtV9+WK3t07sZlUtABzPYQHaD8fdmrHz2VDhZr214rLac8jcwZUHgNsYvYQvM84NZGuWlWX78LofoNXYjYfhP06AArhPQxWov7Ho9irQ3VKx076cO1iBxulc/QgAHMlogJZFoms/FKo2rrbvzN2tQMs/wz0EMhTAPTjgd6BurALtpGTrs2Vj/7of2eU4Rx7cA8BdkTxEqs7qv9PP1jJPOx+pxqJ/f/d3VABwh6jRAECIAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFAKGhAP3l55+YmJiYmLJpNED/+fuGiYmJiSmeDgjQkZYAcD4IUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAoeMGqGoQdBV6C6+11tmbZbNqg1sO/vYrAuA03EeAdt4ZD6nwWillrfUButt/9Z2R5fo20zSNrxqAc/N4K9AyPQMfoK2sDOIStYxjY0y5oKy3OECzZgQogAeuQA/6bGtuXDOq9Bq/2sytAdrP9/EAvbpQSil1cTWyXgBOxrECtJVN1ZyqzqoGltcqLavdZj2E1yFAy2GH19M0VYcXSmDfkgAFztMRK9A418ZvJvYD1EWPj/pdlf20ArQU2nAJD6Dj6AHqlaVc1qz8s/q+56/Ny1DuRGFWM6rhCrTTAwEKnLl7rUDLGHLSCjTusxpq4wHaid3OIghQAPdXgbpugJYR1mkWArSTxWXAlQEaz6rWs+UiqmvBPVDgPN1TBdop3FqlXBmOIYXD4/WsT0GAhjSsxvHgrVsCFDhP9/QUPjw3LyvQfg/xn2WAZi1VodWhSu+BqvbVet9B2wTAibmP/y18J/Ja7cuEiovE8Z8xZR2GP+Mc9y/i50Vlb61BCrcIgJNwHwEKACeJAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIROJ0C/ffv20EMAcF5OIUB//Pjx8uVLpdSLFy++f//+0MMBcC5OIUDfv38f/s35t2/fPvRwAJyLUwjQL1++PHv2zAfo58+fH3o4AM7FKQSoc+7jx4+vXr368OHDQw8EwBk5kQAFgPtHgAKAEAEKAEIEKAAIEaAAIESAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACBGgACBEgAKAEAEKAEIEKAAIEaAAIESAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACI0G6P/++59ffv6JiYmJiSlMQwH6559//PP3DRMTExNTPA0FKACgRIACgBABCgBCBCgACBGgACBEgAKAEAEKAEIEKAAIEaAAIESAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACBGgACBEgAKAEAEKAEIEKAAIEaAAIESAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACA0F6C8//8TExMTElE2jAfrP3zdMTExMTPF0QICOtASA80GAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACBGgACBEgAKAEAEKAEIEKAAIPXyAKqWUUuOvs89qrbO5/T/L91WhbGmtbfUD4GwdK0DLVOrkVJZlrpZ6rWjTWvebDQZofykEKIDSA1SgZWAN5mz/I+Usn62Dqd1aYqdZOTYAZ+VRBOhIy1aDaZpaPWdX960oHBmt6hahVxdKKaUurvpdATgxRwzQVsnWqvI69V0r7PoBWu0k/jNkYva61QkBCiB29AAt/xyp+zq9ZZHXD9DOckMP5f8N7bOqs5XvAM7TAweoGlD2FndVBmj1s+UFeNayWoG2lgsA7sEDtNO+M7cfoNXXWWnpxU/wR0ZFgAKIPYp7oG4gp24ToNV3VPSUqTrOVp9lM+6BAufp/irQzvuHvuNfh3ug1WgeDNB4lizZHQEKnKsH/hmTaxSqrUowvlOZfbzaVX+54Yeivtvyf9TkxgIUwHm61wDtFHqtxq0/qy1bYdeK4zgxVfrD++pyCVAAsQeoQAHgNBCgACBEgAKAEAEKAEIEKAAIEaAAIESAAoAQAQoAQgQoAAgRoAAgRIACgBABCgBCBCgACJ1VgM5Gm7k9267/vPJUtrI6f3Oel7+ttZUGszE2/ri2rmI2k7bZXN+fm62dwzLWNytDzjq2JhtGbZVr7+ZL8EPLljaZOfv0bKbo39iqbLmoYX3utqDZTPnqRAvNh7Otux9QshXXtbHRP5mdbOTwdVXHtc0uvrlkuMVow7Ypd5jy83NnZ6wqv+7KmFRlZ9r2x3RczVGuHzrC2iR7aHX/DKs5sM8U9KVTb5z95NSlM78ns8wbpy6djZod+gWUTj9A40No++eX12M9Pv6re8Ky65QJuH1yMnOeW27ZNUKjdcHZ/rDuP3H3YcDaRqOb1j05/JmsWDhqbP6P7Nd2tC3dt9j0KxofimHXLvrMt6Gx/r90HlfNT6Ybwq9+es4J80y8kGwd/PD9PKu1jVfHD8BsKxFtidna2X/R+RGcnhDKzRiNozLeaCHL3Dh6rE6/uW547Q1I5WeE+iYMy182kjFzdO436V6VDesIaxO63aqV5chI9tPZ2rkoBpKNsq5nkdv60k2f3Pypko/60ql3SbPbO50A/fbtW2+21dr6Y676rVit7fKdTlO0E1pjbLYHh4Axdv2Ps3qL5qwSnfOArB0SfuHaOpcc+lHL5fPL6K3RupY2lQp0a1ZLM63X9mGIy4uyNlj31XyfDaPUdp2ZH8iN2r+fVkt5btKUnkJqa620tibuQ5tsbLUK1Go1aT0pf4oyawfx9xadYarb0+rJzMs3Hx378Xc2GaP9IsKQZmPsdoqqny/a6lcxe4EftoIfjzZmWvdw36HV606QZ/BR18bVz19rLms9LYNNAr1cz2kKHZg3Tr1LA/R3N4VK07+OJgJ08ePHj5cvXyqlXrx48f3797LBel2z7iHhW9m+kcmYdf+cZ6NDwWfrx5FLA9Rak5wy10Xk2auiSnJNqcnEsem2QWm77ZXhRTQz2p2iY78ToP138+MzaeP36mVfnY02JrqY3CpQWz8sZjNpU5b66eLL89paWCp/RBlrw/cSl+lJBaonM68fyfN/24bLmcoYE5aabpKy9F9HOU2TsWZaElgpbcPIty8z6jBerzzsWlehNVYvGVYZVWsTLsvLvqh1TZeTvl7r0ixAj7M2/qsJxUrl88Wc2qpWd2vzxunfnE5TMtSh86clMfVl0uyWMXoKAfr+/fuwtd++fZvMm82k1KS19vuK1WsOdEqz7WqtdfG07mj+P3paLiaTr3XbT+v7gtXa+iyy1uro3G6Nmdf7oCYva6211SvH9llaV3JhOxbjK7L0CCiu36xZQyNbn6QC9SPUyYpOcbncKEajQ3Ndm+iiM7+5t23tqLiyVqdbMf0GJ2Nscq6yRtu5dhOlFaCzMdZqrZfgTUNlNtrYJaEat4XzZQzXbLOZtkuFoqPOJnRbOJbboXUJ7/fu461N9I1W9tIwpuy/O7eDlk+HANW/uflTHo7mnZveuPm35TaoL1Ttu9veCT2FAP3y5cuzZ8/8pvz8+XOlRXZEJ2fq2RcV9abxm9lTltkY6y9yzHo4alPZo1qPMfyi/U2k7HprOUFPxm63CJZd1+qklgv9Fre1slGkas8EwgXdevdyG9Q8z242er1YssbYOdmCUQXqkicdS+w1DsLG7el1bbIANelG2jbpskCr1aRtiJDy3osKq5YMJC6/ys3m5/p7ptauj6qWeDbGTOE0ModIje5x+Jt55bBVvbKqWb77gVve5SZ0yQ6x7apmjgJsWgrxuAI92to4VwvQJJfTr6xys7xyNeFcGaBRMvry075zar0Nyj3QxMePH1+9evXhw4f67ObVhr+ltvckeb0rmZ/3/UHaeF67lCvbFV6cAds1vl7qg/QUHCrQpciK77LZEFTLRX6S+Z0AXaJY2/VIiG9WhIurpak2JilrJzNHUVasSrRlowvt+igqvwCobuAoQK0OJ7lwEEcHUe04NMb6lrMxNjnyo0v44s31Pngotv35aquh0wBdb/qk33CSAdu+FjKpcvgnW78qHm2lAm3to353yi6xTBqE1Uv4W6zNUhh01sSGAjdZt91njts9sm6Avtsu3pMk/d1Nl07/5lweoPubv+VEAnRHfk0ZLtK3Q6ze1PnLp/BFx9mwfmoON9PTHFxqubICjXrZlrY+0/T32Zadxhpj0o7DzKWzdR+e0iOxsssvj1/SksVEvx/Yaha9XZtPUVAsh5lJL3nT9PAjyY8g6Qae1gTTtjxkZmO0TtYgzRgV/+YqXUgZoPlPs6Ir4Cn5YVAUoNsaZJkeX0tvN0gnnd7k8bchdBQd3SquF6DNTeiia4qsio9vD5UV6K3WpnIKTQerpuz+Su2Hg7WHvXsBqi7d9MapS2fW3PRVp2+j17nFL5z2N3/L6Qdo66yW3NuqVqDR06bNbKalzkpKt+iP7APRg6X8l6JT5axndfwkOV7KZGZnbTRz3q4fo89nNxqyWqMjvZWZj0qt/09Mm0dqNpzk6Nqe8Gc9jGzgpHV0dbpeYrYeT2UD2u5OLCeh8Pue6HuobtP4ME0r1bxAqsxMzzPx7yryXwx0hahNR9jdhGUfjfuU6aOd7Vx8tLVJRlP/dWstQOd5uS0TPVBb96x3eSwuj4nebTVpKDnNm+RBk6DwDE4/QAGcPHUpn2613JFGBCgAlAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIQIUAAQIkABQIgABQAhAhQAhAhQABAiQAFAiAAFACECFACECFAAECJAAUCIAAUAIQIUAIRGA/R///3PLz//xMTExMQUpqEA/fPPP/75+4aJiYmJKZ6GAhQAUCJAAUCIAAUAIQIUAIQIUAAQIkABQOj/JxRh/A01icYAAAAASUVORK5CYII=" 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. 分组背包——sicily 1750

    1750. 运动会 限制条件 时间限制: 1 秒, 内存限制: 32 兆 题目描述 ZEH是一名04级的学生,他除了绩点高,还有运动细胞.有一次学院举办运动会,ZEH发现里面的 项目都是他所向披靡的, ...

  2. C#引用类型(class)和值类型(struct)

    1. 值参数 当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法.被调用的方法不传内存中实参的值,所以使用值参数时,可以保证实际值是安全的. using System; ...

  3. easyUI的formatter使用

    <table class="easyui-datagrid" style="width:400px;height:250px" data-options= ...

  4. 原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))

    场景: 客户端初始化正常,到IIS服务就报80040154. System.Web.Services.Protocols.SoapException: System.Web.Services.Prot ...

  5. Web系统大规模并发——电商秒杀与抢购 【转】

    电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要.这次我们 ...

  6. 服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

    转载的服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

  7. Spring 学习笔记 8. 尚硅谷_佟刚_Spring_使用外部属性文件

    1,配置数据源 (1)添加驱动 (2)编写spring配置文件 <bean id="dataSource" class="org.springframework.j ...

  8. android开源系列之——xUtils 开源库

    http://blog.csdn.net/lijunhuayc/article/details/40585607

  9. js多种切换图片

    分享通过js实现多种图片切换特效,这里只有手动切换哦,自动效果需自写,效果地址:http://dwz.cn/1drD5u. 下载地址:http://***/download/index/52209 适 ...

  10. thinkphp学习笔记(一)

    一.入门与安装 1.进入C:\Windows\System32\drivers\etc的hosts文件中增加127.0.0.1 www.tp5.com 即访问这个域名就相当于访问127.0.0.1 2 ...