控制器-各种ActionResult【2】

控制器-各种ActionResult

我们所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件。而它的返回类型是ActionResult如

        public ActionResult Index()
        {

            return View();
        }

除了View()之外那我们这里还能用于返回什么值呢?

<1>ascx页面

场景:要返回代码片断,比如Ajax返回一个子页

让我们先建立一个TestController.cs控制器;我们先新建一个Action

        public ActionResult Ascx()
        {
            return PartialView();
        }

然后给这个Action添加一个视图Ascx.cshtml

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Ascx</title>
</head>
<body>
    <div>
       <table border="1">
        <tr><th>中国</th><th>美国</th><th>英国</th></tr>
        <tr><th>湖南</th><th>纽约</th><th>巴黎</th></tr>
       </table>
    </div>
</body>
</html>

在浏览器中运行 http://localhost:8439/Test/Ascx   得到的结果是一个ascx页面

<2>返回文本

添加Test控制器下添加一个Action方法

        public ActionResult Text()
        {
            return Content("这是一段文本");
        }

这个连视图都不用添加

直接在浏览器中运行 http://localhost:8439/Test/Text   结果是在网页上输出“这是一段文本”这么一行字

<3>返回Json

有时我们在调用Ajax时还会要求返回对象为Json序列化的结果,如:

        public ActionResult ShowJson()
        {

            var userinfo = new { Name = "奥巴马", Age = 56 };
            return Json(userinfo, JsonRequestBehavior.AllowGet);

            //var tempObj = new { Controller = "DemoController", Action = "JsonResultDemo" };
            //return Json(tempObj,JsonRequestBehavior.AllowGet);  

            //JsonRequestBehavior.AllowGet表示:允许来自客户端的 HTTP GET 请求
            //return Json(User, JsonRequestBehavior.AllowGet);
        }

在浏览器中运行 http://localhost:8439/Test/ShowJson  然后就弹出一个窗体让你保存ShowJson.json文件。

保存图片后,用记事本打开文件,文件的内容是 :{"Name":"奥巴马","Age":56}

<4>输出JS文件

大多时候js文件都是静态的,但有时js文件可能也要动态生成这时我们可以这样输出:

        public ActionResult Js()
        {
            return JavaScript("var x=0;");
        }

在浏览器中运行:http://localhost:8439/Test/Js  弹出一个窗体:如下

保存后,用记事本打开Js.js文件 内容是: var x=0;

<5>页面跳转

1.跳转到Action

        public ActionResult rdaction()
        {
            return RedirectToAction("Text", "Test");//跳转到Test控制下的Text方法
        }

在浏览器中运行:http://localhost:8439/Test/rdaction  于是立刻就跳转到 http://localhost:8439/Test/Text页面了,于是输出

2.跳转到Url

        public ActionResult rdurl()
        {
            return Redirect("http://www.baidu.com");
        }

在浏览器中运行:http://localhost:8439/Test/rdurl  于是立刻就跳转到百度的首页了。

3.跳转到Routing规则

        public ActionResult rdrouting() //跳转到Routing规则
        {
            return RedirectToRoute("Default",//Route名
              new
              {
                  Controller = "Test",
                  Action = "Ascx"
              });
        }

在浏览器中运行:http://localhost:8439/Test/rdrouting  于是立刻就跳转到 Test控制器下的Ascx方法了,即跳转到http://localhost:8439/Test/Ascx 页面了

于是就输出 http://localhost:8439/Test/Ascx页面的内容

<6>显示文件

        public ActionResult fn()
        {
            return File("d:/123.jpg","jpg/png/JPEG");
        }

在浏览器中运行:http://localhost:8439/Test/fn    弹出一个对话框:如下

点击保存后,选择用图片查看器打开。显示出了 D盘下的123.jpg图片

时间: 2024-07-30 08:53:24

控制器-各种ActionResult【2】的相关文章

控制器-各种ActionResult

<1> MVC笔记 Controller相关技术 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; using System.IO; namespace DemoRC.Controllers { public class DemoController : Controller {

MVC控制器返回一个list 视图接收

控制器 public ActionResult InfoFrame() { List<Users> list = new List<Users>(); if (Session["UserID"] == null)//判断是否没登录 { return RedirectToAction("LoginIndex", "Login"); } else { string sql = string.Format(@"SELE

关于控制器

控制器是mvc中的核心,负责处理浏览器传来的所有要求,并决定响应什么属性给浏览器. 控制器本身就是一个类,该类别有许多方法,这些方法中只要是公开方法public,就会被视为一个动作action或动作方法,只要有动作存在,就可以通过动作方法接收客户端传来的要求与决定响应器响应的检视. 基本要求: 控制器必须为公开类别 名称必须以Controller结尾 必须继承自asonet mvc内建的Controller类别,或继承有实作IController界面的自定义类别,或者自行实作IControlle

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

[MVC4]初识ASP.NET MVC4

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

1.使用SignalR实现页面即时刷新(服务端主动推送)

模块功能说明: 实现技术:sqlserver,MVC,WebAPI,ADO.NET,SignalR(服务器主动推送) 特殊车辆管理--->移动客户端采集数据存入数据库---->只要数据库数据有变化,服务端自动推送到Wbe页面展示(区别于传统的web请求)-->审核人员审核数据-->返回审核结果给移动客户端 在开发之前搜索了大量文档,也在QQ群咨询过群里的大牛,不少人都感觉比较懵逼的样子.有人建议使用ajax中的长连接,轮询等技术,最终还是决定使用SignalR技术实现页面刷新的效果

Html.DropDownList 三级联动

Models结构 ProductorBF public class ProductorBF { private MyDbDataContext Context = new MyDbDataContext(); public List<Productor> Select() { return Context.Productor.ToList(); } public Productor Select(string prod_code) { var query = Context.Productor

MVC笔记--特性路由

物性路由:将路由和控制器放在一起,这样更简单方便,还可以处理复杂的路由场景 传统路由:集中.强制.基于代码风格来定义的. 每个MVC应用程序都需要路由来定义自己的处理请求方式,路由是MVC是应用程序的入口点.我们先了解一下路由涉及的主要概念:路由定义是从URL模板开始的,因为它指定了与路由相匹配的模式.路由定义可以做为控制器类或操作方法的特性.路由可以指定的它的URL及其默认值,此外,它还可以约束URL的各个部分,提供关于路由如何及何时与传入的URL相匹配的严格控制. 创建一个MVC程序后,我们

【.NET】学ASP.NET MVC笔记

第 1 篇:理解控制器和视图 MVC概述 MVC原理就是模型.视图.控制器的框架.   (其实也是种思想,为了让前端.程序.数据分开,也是想实现低耦合.高内聚) MVC请求流程是:访问控制器,控制器来创建模型,模型去数据库获取数据,模型再返回给视图. VS 2013 创建MVC4 Web应用程序,自动生成MVC框架对应的文件夹,分别是Model.View.Controllers MVC不再用服务器控件(TextBox.GridView等),回到HTML时代,不过可以在html里使用UrlHelp