• Asp.net MVC 视图引擎


    Asp.net MVC视图引擎有两种:

    1、ASPX View Engine

    这个做过WebForm的人都清楚

    设计目标:一个用于呈现Web Form页面的输出的视图引擎。

    2、Razor View

    在Asp.net MVC 3 版本引入的, 可以支持UnitTest,也容易上手。

    Razor在减少代码冗余、增强代码可读性和vs 智能感知方面,都有着很大的优势。

    下面主要讨论下视图引擎

    ActionResult

    讲到视图引擎,不得不说ActionResult,因为在Controller中,我们看不到一点视图引擎的影子,唯一提供线索的只有ActionResult,所以我们必须先从AcionResult下手

    下面是ASP.NET MVC提供的所有的ActionResult类型的类图:

    最具代表性的是ViewResult

    在Asp.net MVC中,ViewResult用的最多,Controller有一个View方法,它来实例化一个ViewResult对象,并返回。

    这里只介绍几个最常用的Result用法:

    (1)EmptyResult

      当用户有误操作或者是图片防盗链的时候,这个EmptyResult就可以派上用场,返回它可以让用户啥也看不到内容,通过访问浏览器端的源代码,发现是一个空内容;

    public ActionResult Empty()
    {
          return new EmptyResult();
    }

    (2)Content

    通过Content可以向浏览器返回一段字符串类型的文本结果,就相当于Response.Write("xxxx");一样的效果;

    public ActionResult ContentResultDemo()
    {
          string contentString = "Hello Edison Chou!";
          return Content(contentString);
    }

    (3)File

    通过File可以向浏览器返回一段文件流,主要用于输出一些图片或文件提供下载等;

    public ActionResult FileStreamResultDemo()
    {
          FileStream fs = new FileStream(Server.MapPath(@"/Content/programmer.jpg"),
          FileMode.Open, FileAccess.Read);
          return File(fs, @"image/gif");
    }

    (4)HttpUnauthorizedResult

    通过HttpUnauthorizedResult可以向浏览器输出指定的状态码和状态提示,如果不指定状态码,则默认为401无权访问;

    public ActionResult HttpUnauthorizedResultDemo()
    {
         return new HttpUnauthorizedResult();
    }

    (5)Redirect与RedirectToAction:

    重定向与重定向到指定Action,我一般使用后者,主要是向浏览器发送HTTP 302的重定向响应;

    public ActionResult RedirectResultDemo()
    {
      return Redirect(@"http://localhost:23531/Home/ContentResultDemo");
    }
    
    public ActionResult RedirectToRouteResultDemo()
    {
      return RedirectToAction("FileStreamResultDemo", "Home");
    }

    (6)Json

    通过Json可以轻松地将我们所需要返回的数据封装成为Json格式,进行Ajax开发可以变得so easy!

    public ActionResult JsonResultDemo()
    {
          var tempObj = new { Controller = "HomeController", Action = "JsonResultDemo" };
          return Json(tempObj, JsonRequestBehavior.AllowGet);
    }

    (7)JavaScript

    可以通过JavaScriptResult向浏览器单独输出一段JS代码,不过由于主流浏览器都对此进行了安全检查,因此你的JS代码也许无法正常执行,反而是会以字符串的形式显示在页面中;

  • 相关阅读:
    利用js在Table中追加数据
    C#API配置跨域
    C#linq查询DataTable
    erlang格式化输出
    erlang 的源代码保护机制
    MP3格式音频文件结构解析
    使用异步 I/O 大大提高应用程序的性能
    虚拟机安装mac 关键是换引导
    C/C++规则整理
    字节对齐
  • 原文地址:https://www.cnblogs.com/ck168/p/5508457.html
Copyright © 2020-2023  润新知