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

HttpStatusCodeResult对象结构如下

 View Code

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

 View Code

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

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

结果截图

在进行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,如需转载请自行联系原博主。

爱上MVC~为非法进行Action的用户提供HttpStatusCodeResult相关推荐

  1. 爱上MVC~为DisplayNameFor添加扩展,支持PagedList集合

    DisplayNameFor方法是MVC提供给我们的,它可以将模型的DisplayName特性的值显示到页面上,这对程序员来说很是方便,在进行实体设计时,可以指定它的显示名称,然后MVC引擎会自动帮助 ...

  2. 爱上MVC~ajax调用分部视图session超时页面跳转问题

    这个问题出现了很多年了,都没有解决,问题是这样的,有一个需要授权才可以访问的分部视图,在一个view中使用ajax的方法去调用它,然后更新页面的局部DIV,这时,如果你长时间不操作,session会超 ...

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

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

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

    本系列文章基于ASP.NET MVC Preview5. 有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器.A ...

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

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

  6. 爱上MVC~业务层刻意抛出异常,全局异常的捕获它并按格式返回

    对于业务层的程序的致命错误,我们一直的做法就是直接抛出指定的异常,让程序去终断,这种做法是对的,因为如果一个业务出现了致命的阻塞的问题,就没有必要再向上一层一层的返回了,但这时有个问题,直接抛异常,意 ...

  7. asp.net mvc源码分析-Action篇 Action的执行

    接着上篇 asp.net mvc源码分析-Action篇 DefaultModelBinder 我们已经获取的了Action的参数,有前面的内容我们知道Action的调用时在ControllerAct ...

  8. ASP.NET MVC以ValueProvider为核心的值提供系统: DictionaryValueProvider

    NameValueCollectionValueProvider采用一个NameValueCollection作为数据源,DictionnaryValueProvider的数据源类型自然就是一个Dic ...

  9. 继续注册前请先阅读终极QQ数字点卡公司在线销售协议 一、新疆维吾尔自治区阿克苏地区终极QQ网络电子商务有限公司使用自己建设的代理商专用电子商务平台系统,通过国际互联网络为用户提供网络游戏分销服务。同

    继续注册前请先阅读终极QQ数字点卡公司在线销售协议 一.新疆维吾尔自治区阿克苏地区终极QQ网络电子商务有限公司使用自己建设的代理商专用电子商务平台系统,通过国际互联网络为用户提供网络游戏分销服务.同时 ...

最新文章

  1. 生成,保存和转换pcd点云文件
  2. 解决mysql java.sql.SQLException: The server time zone value‘XXXXXX' is unrecognized or represents...
  3. ue如何使用php文件,UltraEdit使用设置
  4. B端设计指南 —— 弹窗 究竟应该如何设计
  5. System.getProperty()的用途
  6. 《西游记》原著的一点读后感
  7. 《电子基础与维修工具核心教程》——2.4 电阻的串并联
  8. IPC RFC call in Service Order scenario
  9. AddTransient、AddSingleton、AddScoped 三者都应该在什么场景下使用
  10. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)
  11. HTML5 canvas组件
  12. 陷阱:在 WebApp 中谨防 Singleton 错误
  13. 当金蝶BOS开发网版主啦,纪念下!^_^
  14. X-Scan介绍和使用方法
  15. c语言中m的ascii值,M的ASCII码值为多少
  16. 转-----EasyCHM制作教程
  17. wps中加入代码块样式_样式图块的概述以及为什么要在设计过程中开始实施它们...
  18. Nginx配置带www域名转向无www域名
  19. gartner 曲线解读
  20. arm体系结构总结笔5-总线接口

热门文章

  1. 从Java代码到Java堆理解和优化您的应用程序的内存使用
  2. 第四篇:Mysql数据库的用户授权及撤销
  3. 上古卷轴5python_基于Python-Flask的权限管理5:字典管理
  4. ssm把图片保存到项目中_项目中的图片跨域问题解决方式
  5. 乾坤 微前端_前端优秀资源整理(持续更新~)
  6. python2安装_Linux 上安装 appium 的辛酸
  7. 牛客java面试题总结版(四)
  8. 计算机专业勤学善思感悟,勤学善思作文600字
  9. jQuery成为微软.NET开发工具的一部分了
  10. Ubuntu 16.04 和 Ubuntu 18.04 启用 点击Launcher图标,窗口实现最小化 功能