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();
        }

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>");
        }

 

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文件

 

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

 

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。