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就记录这些吧!

时间: 2024-09-30 19:59:51

ASP.NET MVC学习二之 Controller的相关文章

白话ASP.NET MVC之二:Controller激活系统的概览

前文简介:我们抽象类路由规则的对象,RouteBase是路由对象的抽象基类,ASP.NET 的路由系统中有唯一一个从RouteBase继承的路由对象,那就是Route类型了.我们注册了路由对象Route,UrlRoutingModule截获请求,把当前请求的Url地址和RouteTable路由表中注册的路由对象一个一个的比较,如果没有找到就返回Null,请求就到此终止了.如果有匹配的路由对象,选择第一个匹配的Route对象,并且根据该Route对象,生成了路由数据RouteData对象,本对象是

ASP.NET MVC 学习笔记-2.Controller

MVC中,Controller用来响应对ASP.NET MVC网站的请求,每个浏览器请求都会被映射到特定的Controller实例上,Controller针对请求可能会进行以下处理:向浏览器返回特定的视图或者对请求进行重定向到别的Controller. Controller实质是一个类,都派生于Controller(System.Web.Mvc.Controller基类). Controller上公共的方法称为ControllerAction,ControllerAction不能重载且不能为静态

ASP.NET MVC学习之高级Controller和Action

controller factory 的作用是创建为请求提供服务的Controller实例:action invoker 的作用是寻找并调用Action方法.MVC框架为这两者都提供了默认的实现,我们也可以对其进行自定义

MVC学习二:Controller和View关系

控制器(Controller)主要是定义方法和加载视图(View) 1.控制器中的Action方法返回值的类型ActionResult,string 2.控制器中Action方法接收浏览器参数方式: 2.1.通过 URL路由中配置的同名参数 --url: "{controller}/{action}/{id}",//Stu/Del/1 public ActionResult Del01(int id) 2.2.通过 Request.Form/Request.QueryString [H

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

ASP.NET MVC学习系列(二)-WebAPI请求(转)

转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax

ASP.NET MVC学习之控制器篇

一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MVC学习之路由篇幅(2) ASP.NET MVC学习之路由篇幅(3) 二.正文 1.IController的使用 这个接口可能很多人都没有使用过,但是我们常用的Controller类实现了这个接口,而且只要实现这个接口就可以作为一个控制器,当然很多的内部的处理就要我们自己去做了. 下面我利用ICont

ASP.NET MVC学习之过滤器(一)

一.前言 继前面四篇ASP.NET MVC的随笔,我们继续向下学习.上一节我们学习了关于控制器的使用,本节我们将要学习如何使用过滤器控制用户访问页面. 二.正文 以下的示例建立在ASP.NET MVC 4之上(VS2012) 1.授权过滤器 只要涉及用户的网站,都一定会涉及到什么权限的用户可以访问哪个页面.对于新手而言可能都在每个页面中单独写这个功能方法,导致的后果就是大量重复的代码,并且不便于以后的变动.有用一定经验之后,就会采用集中控制的方式,让所有的页面先执行特定的方法去判断,这样的优点就

ASP.NET MVC学习之Ajax(完结)

一.前言 通过上面的一番学习,大家一定收获不少.但是总归会有一个结束的时候,但是这个结束也意味着新的开始. 如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发ajax十分的简单,而ASP.NET MVC学习到现在页面都是刷新的,所以这节就是ASP.NET MVC的最后一节,通过这节的学习我们将能够实现通过ajax提交表单,下面我们开始继续学习. 二.准备工作 1.首先确保引用了以下js库在_Layout中: 2.新建一个HomeController,然后在其