• ASP.NET MVC学习二之 Controller


    一:简单理解Controller

          新建controller必须以命名+controller结尾,controller的职责是负责与Model进行交换并将数据传递给view视图显示给用户

    简单的控制器:

    public class HomeController : Controller
        {
            //
            // GET: /Test/
    
            public ActionResult Index()
            {
                return View();
            }
    
        }

    这里,对其进行简单的修改

    public string Index()
            {
                return "Hello World";
            }

    浏览器能正确在页面返回”Hello World”字符串;

    接下来我们来更改Controller来将其返回不同的ActionResult对象

    类别

    Controller辅助方法

    用途帮助

    ContentResult

    Content

    回传一个用户自定义的文件属性

    EmptyResult

     

    不响应任何信息到客户端

    FileResult

    1.FileContentResult

    2.FilePathResult

    3.FileStreamResult

     

    File

    以二进制串流的方式回传一个文档信息

    1.直接输出byte[]属性

    2.指定文档路径输出文档属性

    3.指定Stream对像回传其属性

    HttpStatusCodeResult

    1.HttpNotFoundResult

    2.HttpUnauthorizedResult

     

    HttpNotFound

     

    回传自定义的HTTP状态代码与消息

    1.回传HTTP404状态代码

    2.回传HTTP401状态代码

    JavaScriptResult

    JavaScript

    回传的是javascript脚本

    JsonResult

    Json

    将数据串行化成JSON格式回传

    RedirectResult

    Redirect

    RedirectPermanent

    重新导向指定的URL

     

     

    RedirectToRouteResult

    RedirectToAction

    RedirectToPermanent

    RedirectToRoute

    RedirectToRoutePermanent

     

    与RedirectResult相似,但是他是重导向到一个Action或Route

    ViewResultBase

    1.ViewResult

    2.PartialViewResult

    view

    PartialView

    回传一个View页面

    1.回传检视页面(View Page)

    2.回传部分检视页面

    EmptyResult

          就是返回一个空的页面内容,所以也就可以不用view视图。

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

    image

    EmptyResult返回的是一个空的页面,那它究竟有什么功能和作用呢?这个EmptyResult可以说起到一个中转的作用,起到适配器的作用,如果我们有些请求只是要求统计一下数量并不需要显示页面,则这个Empty就起到了作用。

    例如我们要想要在网站实现在线人数的统计功能,可以在网页中动态发出一个HTTP请求给Controller的其中一个Action,当Controller收到要求后会

    public ActionResult OnlineUserHit()
        {
            //Todo Something
            return new EmptyResult();
        }
        或如下:
        public ActionResult OnlineUserHit()
        {
            return;
        }

    ContentResult

         暂且先理解ContetResult返回的的是纯文本的内容,不是html内容,其相当于Response.write(),但是如果输出的html标签内容也会被浏览器解析

    public ActionResult Test()
            {
                return Content("<font color='red'>hello ContentResult</font>");
            }

    image

    JavaScriptResult

    这里JavaScriptResult是向前台输出一段javascript代码

    在HomeController中定义两个Action

    public ActionResult Index()
            {
                return View();
            }
            public ActionResult Test4Js()
            {
                string js = "alert('Hello MVC')";
                return JavaScript(js);
            }

    在Index视图中

    @{
        ViewBag.Title = "Index";
    }
        <script src="~/Scripts/jquery-1.7.1.min.js"></script>
        <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    
    @Ajax.ActionLink("调用JS", "Test4Js", new AjaxOptions())

    注意引用了两个js文件

    image

    JsonResult

      JasonResult是向前台输出一段Json数据

    public ActionResult Index()
            {
                return View();
            }
            public ActionResult Test4Json()
            {
    
                Models.User user = new Models.User() { Name = "test", Age = 11 };
    
                return Json(user, JsonRequestBehavior.AllowGet);
    
            }

    前台的view视图代码

    @{
        ViewBag.Title = "Index";
    }
    <script src="~/Scripts/jquery-1.7.1.min.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
    
    <script type="text/javascript">
        $(function () {
            $("#check").click(function () {
                $.get("/Home/Test4Json", null, function (data) {
    
                    var html = "姓名:" + data.Name + ",年龄:" + data.Age;
    
                    $("#result").html(html + ",");
    
                }, "json");
            })
        })
    </script>
    <h1>Json实例</h1>
    
    查询:<input type="button" value="查询" id="check" />
    <div id="result" style="margin: 10px">
    </div>

    RedirectToRouteResult

    重导向到一个Action或Route

    public ActionResult Index()
            {
                return RedirectToAction("test4RedirectToRouteResult");
            }
    
            public ActionResult test4RedirectToRouteResult()
            {
                return View();
            }

    在浏览器输入http://localhost:8398/Home/Index

    image

     

    大概今天的controller的result就记录这些吧!

  • 相关阅读:
    Jar包管理规范
    Base64编码原理与应用
    MySQL 5.7.14安装说明,解决服务无法启动
    idea注册
    Oracle 如何对中文字段进行排序
    SVN错误:Attempted to lock an already-locked dir
    排序算法
    设计模式
    分层
    阿里云
  • 原文地址:https://www.cnblogs.com/ilooking/p/4088966.html
Copyright © 2020-2023  润新知