博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Action返回结果类型的事儿(下)
阅读量:5099 次
发布时间:2019-06-13

本文共 5149 字,大约阅读时间需要 17 分钟。

原文:

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"
);
         
}
    
}
 
}
posted on
2015-12-05 11:12 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/5021214.html

你可能感兴趣的文章
概率算法_二项分布和泊松分布
查看>>
crontab命令使用文档.txt
查看>>
Luogu2986 [USACO10MAR]伟大的奶牛聚集 (树形DP)
查看>>
在JasperReport中填充JavaBean(4)
查看>>
npm init、 npm install -S 、npm install -D
查看>>
MYSQL双主故障解决实例。
查看>>
软件测试
查看>>
JAVA当中内存管理与垃圾回收!
查看>>
[HNOI2012] 矿场搭建
查看>>
py+selenium IE 定位到元素,但点击不了元素的问题【已解决】
查看>>
20160908_Redis主从复制Replication
查看>>
ZNYW.20180201_01_DianQiLiang.svg
查看>>
springboot---->springboot中的格式化(一)
查看>>
【Java每日一题】20170104
查看>>
C语言基本数据类型简介
查看>>
[App Store Connect帮助]七、在 App Store 上发行(2.5)设定价格与销售范围:向企业或教育机构分发您的 App...
查看>>
[Swift]LeetCode337. 打家劫舍 III | House Robber III
查看>>
[Swift]LeetCode368. 最大整除子集 | Largest Divisible Subset
查看>>
[Swift]LeetCode493. 翻转对 | Reverse Pairs
查看>>
[Swift]LeetCode42. 接雨水 | Trapping Rain Water
查看>>