ASP.NET MVC 控制器输入与输出

System.Web.Mvc.Controller是大多数MVC开发者需要熟悉的,用来对请求处理提供支持的一个类。Controller类提供了以下三个特性:

1. 动作方法(Action Method): 一个控制器的行为被分解成多个方法(而不是像Handler只有一个Execute方法)。每个动作方法被暴露给不同的URL,并通过从输入请求提取的参数进行调用。

2. 动作结果(Action Result): 你可以返回一个描述动作结果的对象(例如:返回一个视图或重定向到不同的URL或动作方法),然后通过该对象实现你的目的。这种结果和执行的分离简化了单元测试。

3. 过滤器(Filter): 你可以把可重用的行为封装成过滤器,然后通过在源代码中放置一个注解属性的方法,把这种行为标注在一个或多个控制器或方法中。

 

接收请求参数

控制器经常要访问来自于输入请求的数据,如查询字符串,表单值,以及路由系统根据输入URL解析得到的参数。访问这些数据主要有三种途径:

1. 通过一组上下文对象进行获取;常见的上下文对象包含(Request,HttpContext,RouteData,User,TempData);

2. 作为参数被传递给动作方法而形成的数据;Controller父类使用了叫“值提供器(Value Provider)”和“模型绑定器(Model Binder)”的MVC框架组件来获取动作方法的参数值,它们会抓取Request.Forms,Request.QueryString,Request.Files以及RouteData.Values的数据项。

3. 明确地调用框架的模型绑定特性

 

产生输出

MVC框架通过使用动作结果把指明意图执行意图分离开。它有助于实现更简单,更简洁且更一致的代码,这些代码更易于阅读和测试。MVC框架所有的内建动作结果类型都派生于ActionResult。

例如:

类型

描述

辅助器方法

ViewResult

返回指定的或默认的视图模板

View

PartialViewResult

返回指定的或默认的分部视图模板

PartialView

RedirectToRouterResult

重定向到一个动作方法或路由

RedirectToAction

RedirectToActionPermanent

RedirectToRoute

RedirectToRoutePermanent

RedirectResult

重定向到指定的URL

Redirect

ContentResult

返回文本数据

Content

FilePathResult

FileContentResult

FileStreamResult

将二进制数据直接传给浏览器

File

JsonResult

将一个.NET对象序列化为JSON格式

Json

JavaScriptResult

发送一个由浏览器执行的JavaScript源代码判断

JavaScript

 

HttpUnauthorizedResult

将响应的HTTP状态码设置为401,这回引发当前认证机制要求访问者登陆

None

HttpNotFoundResult

返回一个404错误

HttpNotFound

HttpStatusCodeResult

返回一个指定的HTTP状态码

None

EmptyResult

什么也不做

None

 

详细解释:

PartialView

当需要多次使用一个页面的某一部分的时候,可以把它封装成分部视图。我们完全可以通过AJAX调用控制器的PartialView方法来返回不同的HTML。只是这样做所需的字节数会比返回一个JSON要多。PartialView和View的区别在于PartialView不能包含母版页。

 

RedirectToAction

可以转到指定的控制器中的动作方法,它采用的302重定向。

RedirectToAction("Index","Home");

 

RedirectToRoute

定义一个路由对象来重定向,它采用的302重定向。

RedirectToRoute(new { controller = "Admin", action = "Index" });

 

RedirectToActionPermanent

RedirectToAction不同的是它采用的是301重定向,这种重定向对SEO更友好,因为它可以保留原网页的Ranking记录。

 

Content

返回指定文本内容,可以指定文本类型和编码格式

 

File

显示/下载 一个文件

 

Json

返回JSON格式数据

 

JavaScript

返回一段JavaScript字符串到前台,但不执行,前台可以调用eval来执行这段代码

你可能感兴趣的:(Web应用,ASP.NET,MVC)