前进中的蜗牛

番茄大叔

水滴穿石,非一日之功;没有量变,何来质变。

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,

  1. ViewEnginesViewEngine集合生成View遍历所有项
  2. ViewEngine方法FindPartialView()FindView()返回ViewEngineResult包含IView
  3. IView通过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文件动态编译为程序集。

posted @ 2018-09-04 14:35  LoveTomato  阅读(169)  评论(0编辑  收藏  举报