关于Action返回结果类型的事儿(下)
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"
);
}
}
}
关于Action返回结果类型的事儿(下)的更多相关文章
- ASP.NET MVC – 关于Action返回结果类型的事儿(上)
原文:ASP.NET MVC – 关于Action返回结果类型的事儿(上) 本文转自:博客园-文超的技术博客 一. ASP.NET MVC 1.0 Result 几何? Action的 ...
- 【MVC】关于Action返回结果类型的事儿(上)
一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1. ...
- 【MVC】关于Action返回结果类型的事儿(下)
代码
- ASP.NET MVC Action返回结果类型【转】
ASP.NET MVC 目前一共提供了以下几种Action返回结果类型: 1.ActionResult(base) 2.ContentResult 3.EmptyResult 4.HttpUnauth ...
- Controller 中Action 返回值类型 及其 页面跳转的用法
•Controller 中Action 返回值类型 View – 返回 ViewResult,相当于返回一个View 页面. -------------------------------- ...
- MVC Action 返回类型[转]
一. ASP.NET MVC 1.0 Result 几何? Action的返回值类型到底有几个?咱们来数数看. ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回 ...
- MVC方法的返回值类型
MVC方法返回值类型 ModelAndView返回值类型: 1.当返回为null时,页面不跳转. 2.当返回值没有指定视图名时,默认使用请求名作为视图名进行跳转. 3.当返回值指定了视图名,程序会按照 ...
- Action的返回值类型总结
Action的返回值 MVC 中的 ActionResult是其他所有Action返回类型的基类,下面是我总结的返回类型,以相应的帮助方法: 下面是这些方法使用的更详细的例子 一.返回View ...
- asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比
通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致 ...
随机推荐
- setTimeout()的返回值
今天遇到一个问题,题目如下: var len=4; while(len--){ setTimeout(function(){ console.log(len); },0); console.log(l ...
- 再探java基础——零碎基础知识整理
1.java是解释型语言.java虚拟机能实现一次编译多次运行. 2.JDK(java software Development kit 软件开发包),JRE(java Runtime Environ ...
- [Javascript] What is JavaScript Function Currying?
Currying is a core concept of functional programming and a useful tool for any developer's toolbelt. ...
- webform 复杂点的服务器控件
1 , dropdownlist: 下拉框 属性items 列表集合, 里面的每一个元素是一个 listitem . 联动的时候注意要 设置属性 .Autopostback 为ture: 注注 ...
- hdu 1175
#include <iostream> #include <string> #include <stdio.h> using namespace std; int ...
- CSS中伪类的使用
原文:http://www.cnblogs.com/guopei/archive/2011/04/16/2017627.html 何为伪类? 也就是实际实现了类的效果,但是并没有实际添加到标签中的类, ...
- xib添加手势后报错:-[UITapGestureRecognizer setFrame:]: unrecognized selector sent to instance xxx
主要原因如下: + (instancetype)mineHeaderView { return [[NSBundle mainBundle] loadNibNamed:@"DDMineHea ...
- PHP 异常处理
PHP 异常处理 异常用于在指定的错误发生时改变脚本的正常流程. 异常是什么 PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况 ...
- Smtp协议与Pop3协议的简单实现
前言 本文主要介绍smtp与pop3协议的原理,后面会附上对其的简单封装与实现. smtp协议对应的RFC文档为:RFC821 smtp协议 SMTP(Simple Mail Transfer Pro ...
- 如何实现一个通用的IHttpHandler 万能的IHttpHandler HttpWebRequest文件上传
昨天遇到一个比较奇怪的需求,大致是需要在服务器上部署一个http服务,但是服务的具体功能不知道,以后在客服端实现.这里介绍一下系统背景,有一个系统运(部署在美国)行了很多年了,给系统产生了很多文件,现 ...