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 MVC.Controllers
{
    /**/
    /// <summary>
    /// Controller 类必须以字符串 "Controller" 做类名称的结尾,字符串 Controller 之前的字符串为 Controller 的名称,类中的方法名为 Action 的名称
    /// </summary>
    public class ControllerDemoController : Controller
    {
        // [NonAction] - 当前方法仅为普通方法,不解析为 Action
        // [AcceptVerbs(HttpVerbs.Post)] - 声明 Action 所对应的 http 方法

/**/
        /// <summary>
        /// Action 可以没有返回值
        /// </summary>
        public void Void()
        {
            Response.Write(string.Format("<span style='color: red'>{0}</span>", "void"));
        }

/**/
        /// <summary>
        /// 如果 Action 要有返回值的话,其类型必须是 ActionResult
        /// EmptyResult - 空结果
        /// </summary>
        public ActionResult EmptyResult()
        {
            Response.Write(string.Format("<span style='color: red'>{0}</span>", "EmptyResult"));
            return new EmptyResult();
        }

/**/
        /// <summary>
        /// Controller.Redirect() - 转向一个指定的 url 地址
        /// 返回类型为 RedirectResult
        /// </summary>
        public ActionResult RedirectResult()
        {
            return base.Redirect("~/ControllerDemo/ContentResult");
        }

/**/
        /// <summary>
        /// Controller.RedirectToAction() - 转向到指定的 Action
        /// 返回类型为 RedirectToRouteResult
        /// </summary>
        public ActionResult RedirectToRouteResult()
        {
            return base.RedirectToAction("ContentResult");
        }

/**/
        /// <summary>
        /// Controller.Json() - 将指定的对象以 JSON 格式输出出来
        /// 返回类型为 JsonResult
        /// </summary>
        public ActionResult JsonResult(string name)
        {
            System.Threading.Thread.Sleep(1000);

var jsonObj = new { Name = name, Age = new Random().Next(20, 31) };
            return base.Json(jsonObj);
        }

/**/
        /// <summary>
        /// Controller.JavaScript() - 输出一段指定的 JavaScript 脚本
        /// 返回类型为 JavaScriptResult
        /// </summary>
        public ActionResult JavaScriptResult()
        {
            return base.JavaScript("alert('JavaScriptResult')");
        }

/**/
        /// <summary>
        /// Controller.Content() - 输出一段指定的内容
        /// 返回类型为 ContentResult
        /// </summary>
        public ActionResult ContentResult()
        {
string contentString = string.Format("<span style='color: red'>{0}</span>", "ContentResult");
            return base.Content(contentString);
        }

/**/
        /// <summary>
        /// Controller.File() - 输出一个文件(字节数组)
        /// 返回类型为 FileContentResult
        /// </summary>
        public ActionResult FileContentResult()
        {
            FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);
            int length = (int)fs.Length;
            byte[] buffer = new byte[length];
            fs.Read(buffer, 0, length);
            fs.Close();

return base.File(buffer, "image/gif");
        }

// <summary>
        /**/
        /// Controller.File() - 输出一个文件(文件地址)
        /// 返回类型为 FileContentResult
        /// </summary>
        public ActionResult FilePathResult()
        {
            var path = Request.PhysicalApplicationPath + "Content/loading.gif";
            return base.File(path, "image/gif");
        }

// <summary>
        /**/
        /// Controller.File() - 输出一个文件(文件流)
        /// 返回类型为 FileContentResult
        /// </summary>
        public ActionResult FileStreamResult()
        {
            FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);

return base.File(fs, @"image/gif");
        }

/**/
        /// <summary>
        /// HttpUnauthorizedResult - 响应给客户端错误代码 401(未经授权浏览状态),如果程序启用了 Forms 验证,并且客户端没有任何身份票据,则会跳转到指定的登录页
        /// </summary>
        public ActionResult HttpUnauthorizedResult()
        {
            return new HttpUnauthorizedResult();
        }

/**/
        /// <summary>
        /// Controller.PartialView() - 寻找 View ,即 .ascx 文件
        /// 返回类型为 PartialViewResult
        /// </summary>
        public ActionResult PartialViewResult()
        {
            return base.PartialView();
        }

/**/
        /// <summary>
        /// Controller.View() - 寻找 View ,即 .aspx 文件
        /// 返回类型为 ViewResult
        /// </summary>
        public ActionResult ViewResult()
        {
            // 如果没有指定 View 名称,则寻找与 Action 名称相同的 View
            return base.View();
        }

/**/
        /// <summary>
        /// 用于演示处理 JSON 的
        /// </summary>
        public ActionResult JsonDemo()
        {
            return View();
        }

/**/
        /// <summary>
        /// 用于演示上传文件的
        /// </summary>
        public ActionResult UploadDemo()
        {
            return View();
        }

/**/
        /// <summary>
        /// 用于演示 Get 方式调用 Action
        /// id 是根据路由过来的;param1和param2是根据参数过来的
        /// </summary>
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult GetDemo(int id, string param1, string param2)
        {
            ViewData["ID"] = id;
            ViewData["Param1"] = param1;
            ViewData["Param2"] = param2;

return View();
        }

/**/
        /// <summary>
        /// 用于演示 Post 方式调用 Action
        /// </summary>
        /// <remarks>
        /// 可以为参数添加声明,如:[Bind(Include = "xxx")] - 只绑定指定的属性(参数),多个用逗号隔开
        /// [Bind(Exclude = "xxx")] - 不绑定指定的属性(参数),多个用逗号隔开
        /// [Bind] 声明同样可以作用于 class 上
        /// </remarks>
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult PostDemo(FormCollection fc)
        {
            ViewData["Param1"] = fc["param1"];
            ViewData["Param2"] = fc["param2"];

// 也可以用 Request.Form 方式获取 post 过来的参数

// Request.Form 内的参数也会映射到同名参数。例如,也可用如下方式获取参数 
            // public ActionResult PostDemo(string param1, string param2)

return View("GetDemo");
        }

/**/
        /// <summary>
        /// 处理上传文件的 Action
        /// </summary>
        /// <param name="file1">与传过来的 file 类型的 input 的 name 相对应</param>
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult UploadFile(HttpPostedFileBase file1)
        {
            // Request.Files - 获取需要上传的文件。当然,其也会自动映射到同名参数
            // HttpPostedFileBase hpfb = Request.Files[0] as HttpPostedFileBase;

string targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Upload", Path.GetFileName(file1.FileName));
            file1.SaveAs(targetPath);

return View("UploadDemo");
        }
    }
}

Asp.net MVC Action大全(转)相关推荐

  1. ASP.NET MVC Action Filters

    在看这篇Fun with Http Headers in ASP.NET MVC Action Filters的时候,提到了 Roni Schuetz在codeplex上创建的一个项目ASP.NET ...

  2. ASP.NET MVC Action向视图传值之匿名类型

    在使用ASP.NET MVC过程中想必大家都有遇到过一个问题就是我们的Action如何向视图传递匿名类型的值呢,如果不做特殊处理则无法实现. 接下来我们来看一个示例: 在我们的控制中: using S ...

  3. ASP.NET MVC XML绑定Action参数列表

    昨天查看了 ASP.NET MVC 的生命周期,并没有找到类似的解决方案. 不过今天在 stackoverflow上找到了解决方案,没耐心的同学可以直接戳原文拷贝代码,原文地址:How to pass ...

  4. ASP.NET MVC 入门10、Action Filter 与 内置的Filter实现(实例-防盗链)

    本系列文章基于ASP.NET MVC Preview5. 前一篇中我们已经了解了Action Filter 与 内置的Filter实现,现在我们就来写一个实例.就写一个防盗链的Filter吧. 首先继 ...

  5. C# ASP.NET MVC HtmlHelper用法大全

    C# ASP.NET MVC HtmlHelper用法大全 (原文) HTML扩展类的所有方法都有2个参数: 以textbox为例子 public static string TextBox( thi ...

  6. [ASP.NET MVC 小牛之路]10 - Controller 和 Action (2)

    继上一篇文章之后,本文将介绍 Controller 和 Action 的一些较高级特性,包括 Controller Factory.Action Invoker 和异步 Controller 等内容. ...

  7. 从零开始学习 ASP.NET MVC 1.0 (三) Controller/Action 深入解析与应用实例 【转】

    一.摘要 一个Url请求经过了Routing处理后会调用Controller的Action方法. 中间的过程是怎样的? Action方法中返回ActionResult对象后,如何到达View的? 本文 ...

  8. asp.net mvc 使用ajax请求 控制器 (PartialViewResult)分部的action,得到一个分部视图(PartialView)的HTML,进行渲染...

    在asp.net mvc 使用ajax请求获取数据的时候,我们一般是返回json或者xml,然后解析这些数据进行渲染,这样会比较麻烦,可以请求一个 分部action,返回一个分部视图 直接可以渲染,不 ...

  9. Asp.net Mvc Codeplex Preview 5 第三篇 实现Action参数传递繁杂类型 【转】

    本文的环境是Asp.net Mvc Codeplex Preview 5 前文提到我们可以使用 Controller中的UpdateModel来获取 繁杂类型 例如 1 UpdateModel(x,  ...

最新文章

  1. js学习总结----crm客户管理系统之项目开发流程和api接口文档
  2. Angular-在服务和组件中使用管道
  3. cakephp对数据库的增删改查
  4. Spring MVC讲解
  5. 如何用JavaScript实现获取验证码的效果
  6. 疯狂.NET架构通用权限后台管理工具演示版2.0下载
  7. Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
  8. ssm使用全注解实现增删改查案例——DeptServiceImpl
  9. 关于CI框架引入CSS与JS文件
  10. C++ 中的 #pragma warning(push) 和 #pragma warning(pop)有什么用
  11. 线程调度优先级和关联性
  12. Security Tutorials系列文章第七章:User-Based Authorization(下)
  13. Docker : 获取运行容器的IP地址
  14. 帝国7.5标签+在PHP7.0,帝国CMS7.5支持PHP7.*系列,兼容性更好
  15. gps频率范围_如何计量检定频率计数器
  16. 为什么静态方法中不可以直接访问非静态方法?
  17. 图像下采样 matlab_MATLAB--数字图像处理 图像的采样与量化
  18. http://www.baidu.com/cb.php?,帮助文档首页/百度翻译
  19. 网易云音乐基于用户的推荐系统
  20. krpano相关笔记

热门文章

  1. php动态写入vue,Vue.js中使用动态组件的方法
  2. Spring Security AuthenticationManagerBuilder
  3. webstorm chrome热更新
  4. python 保留的类标识符
  5. 02 unix文件系统和命令
  6. Flask 验证模式
  7. opencv SURF角检测
  8. 通过options探测服务器信息,WEB服务器启用了OPTIONS方法
  9. ESXi 内存分配原理
  10. Java设计模式学习总结(14)——结构型模式之代理模式