View的呈现
Http为请求响应协议,Server端针对Client端请求做出响应。在Asp.net中通过HttpResponse对象写入服务端响应。
在asp.net mvc中action执行返回ActionResult对象类型,ActionResult.ExecuteResult()通过调用HttpReponse相应客户端,对于Html页面响应,借助引擎定制Html。

ActionResult
本节介绍一些基本的类型响应类(这些通过实现ActionResult类)。同时为了操作方便:Controller提供了响应的调用方法。
| 类型 | Controller中调用方法 | 目的 |
|---|---|---|
| EmptyResult | 无 | 服务端不向客户端输出内容 |
| ContentResult | Content() | 向客户端输出纯文本 |
| FileContentResult | File() | 文件下载,接受byte[] |
| FilePathResult | File() | 文件下载,接受文件path |
| FileStreamResult | File() | 文件下载,接受文件流FileStream |
| JavascriptResult | JavaScript() | 返回客户端脚本 |
| JsonResult | Json() | 返回Json类型文本 |
| HttpStatusCodeResult | HttpNotFound()或new HttpUnauthorizedResult() | 路径不存在或没有权限 |
| RedirectResult | Redirect() | 跳转http路径 |
| RedirectToRouteResult | RedirectToAction() | route路由 |
注意文件下载有两种方式:
- 文件直接在浏览器打开(内敛方式下载)
- 附件形式下载(需要设置http
Content-Disposition:attachment;filename={FileDownName}),在MVC中设置FileDownloadName就按附件形式下载。
ViewResult
在大多数情况下,Server端响应的是Html页面,对这种复杂的内容实现方便生成,通过引擎。
Engine的提供
IView为View页面接口,Render()方法将html输出到客户端。通过Engine生成View,
ViewEngines为ViewEngine集合生成View遍历所有项ViewEngine方法FindPartialView()和FindView()返回ViewEngineResult包含IViewIView通过Render()生成html响应
注意Controller中提供View()方法将数据传递到View。常用的view(object model),model为ViewResult.Model
ViewResult调用引擎
ViewResult继承自ViewResultBase。其中ViewResultBase.ViewEngineCollection为注册的所有Engines。
其中ViewResult.FindView通过遍历获得ViewEngineResult
Engine
Asp.net MVC自带两种Engine,WebForm和Razor(提倡使用),第一次访问文件时将.chtml文件动态编译为程序集。

浙公网安备 33010602011771号