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