MVC Controller return 格式之JsonResult、ContentResult、RedirectResult……
//语法
public class JsonResult : ActionResult public class ContentResult : ActionResult public class RedirectResult : ActionResult
eg:
public ActionResult Index()
{
return View();
}
//返回一个子页
public ActionResult Ascx()
{
return PartialView();
}
//返回文本
public ActionResult Text()
{
return Content("这是一段文本");
}
返回Json
public JsonResult GetJson() {
var Data = new { demo = demoList, Total = demoList.Count}; //在这里必须要设置JSON的请求行为为GET
return Json(Data, JsonRequestBehavior.AllowGet); } public ContentResult DoSelect(string StudentId)
{
var result = "success";
return Content(JsonConvert.SerializeObject(result, Formatting.None));
} public ActionResult Index() { //这个是BiewBag传值的方法
ViewBag.Title = "Demo一览画面";
if ( == demoList.Count) { //模拟select * from DemoModels
for (int i = ; i <= ; i++)
{ demoList.Add(this.CreateDemoModels(i)); }
}
return View(demoList);
} //输出JS文件
public ActionResult Js()
{
return JavaScript("var x=0;");
} //页面跳转
.跳转到Url public RedirectResult rdurl()
{
return Redirect("http://www.baidu.com");
}
.跳转到Action public ActionResult rdaction()
{
return RedirectToAction("Index","Eice");
} .跳转到Routing规则 public ActionResult rdrouting()
{
return RedirectToRoute("Default",//Route名
new{Controller = "Eice",Action = "Index" });
} //显示文件
public ActionResult fn()
{
return File("/Content/site.css","text/css");
}
//Excel导入模板下载
public FileResult GetFile()
{
const string url = "~/TempExcel/商品评论模板.xls";
var fileName = Server.MapPath(url);
var name = Path.GetFileName(fileName);
return File(fileName, "application/ms-excel", Url.Encode(name));
}
另外,
Webapi的接口返回值主要有四种类型
- void无返回值
- IHttpActionResult
- HttpResponseMessage
- 自定义类型
详情参见:http://www.cnblogs.com/zfdcp-028/p/5788649.html
跳转到同一控制器内的action和不同控制器内的action、带有参数的action跳转和不带参数的action跳转。
一、RedirectToAction("Index");//一个参数时在本Controller下,不传入参数。
二、RedirectToAction(ActionName,ControllerName) //可以直接跳到别的Controller.
三、RedirectToRoute(new {controller="Home",action="Index"});//可跳到其他controller
四、RedirectToRoute(new {controller="Home",action="Index", id=param});//可跳到其他controller,带参数。
五、Response.Redirect("Index?id=1");//适用于本controller下的方法名称,可带参数。
六、return Redirect("Index");//适用于本controller下的方法名称。
七、return View("Index"); //直接显示对应的页面 不经过执行Controller的方法。
八、return View("~/Views/Home/Index.aspx");//这种方法是写全路径,直接显示页面,不经过Controller方法
九、return View();//直接显示页面,不经过Controller方法
重写返回结果HttpResponseMessage
public class BaseController : ApiController
{
public int loginid { get; set; } public string loginname { get; set; } public BaseBll baseBll { get; set; } protected override void Initialize(HttpControllerContext controllerContext)
{
//初始化请求上下文
base.Initialize(controllerContext);
try
{
new SortedDictionary<string, string>();
string username = string.Empty;
HttpRequestHeaders headers = controllerContext.Request.Headers;
if (headers.Contains("e"))
{
text = (headers.GetValues("e").FirstOrDefault<string>().ToString() ?? string.Empty);
text = System.Web.HttpUtility.UrlDecode(username);
}
UserInfoEntity userInfo = new LoginBll().GetUserInfo(username);
this.loginid = userInfo.LoginID;
this.loginname = userInfo.LoginName;
List<UserAuthorityEntity> tempList = userInfo.UserRole.UserAuthority;
//不存在安全问题 后续文章有权限验证
if (tempList.Where(c => c.AuthorityName == "权限名称").ToList().Count > )
{
//调用一个有权限的bll层
this.baseBll = new SeniorBll();
}
else
{
//调用一个没有权限的bll层
this.baseBll = new OrdinaryBll();
}
}
catch (Exception ex)
{
LogHelper.WriteErrorLog("Initialize", ex);
}
}
/// <summary>
/// 设置action返回信息
/// </summary>
/// <param name="result">返回实体</param>
/// <returns></returns>
protected HttpResponseMessage GetHttpResponseMessage(object result)
{
BaseResponseEntity<object> responseBaseEntity = new BaseResponseEntity<object>(, result, string.Empty);
return new HttpResponseMessage()
{
Content =
new StringContent(JsonConvert.SerializeObject(responseBaseEntity, dtConverter), System.Text.Encoding.UTF8,
"application/json")
};
}
/// <summary>
/// 设置action返回信息
/// </summary>
/// <param name="result">返回实体</param>
/// <param name="msg">返回的信息参数</param>
/// <returns></returns>
protected HttpResponseMessage GetHttpResponseMessage(object result, ref string msg)
{
BaseResponseEntity<object> responseBaseEntity = new BaseResponseEntity<object>(, result, msg ?? string.Empty);
return new HttpResponseMessage()
{
Content =
new StringContent(JsonConvert.SerializeObject(responseBaseEntity, dtConverter), System.Text.Encoding.UTF8,
"application/json")
};
}
}
参考:http://blog.csdn.net/l1158513573/article/details/77045213 WebApi开发爬坑记之·一重写ApiController
MVC Controller return 格式之JsonResult、ContentResult、RedirectResult……的更多相关文章
- MVC Controller return 格式
所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Index() ...
- MVC Controller return 格式分类及用法
概述 所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Index ...
- mvc Controller类介绍
1.Controller类 i.Controller必须为公开类: ii.必须以Controller结尾: iii.继承Controller基类或实现IController接口的类: iv.类中必须包 ...
- 一步步学习ASP.NET MVC3 (8)——EmptyResult,ContentResult,RedirectResult
请注明转载地址:http://www.cnblogs.com/arhat 上一章,我们阐述了Controller,Action和ActionResult所代表的含义及使用,本章继续研究ActionRe ...
- System.Web.Mvc.Controller.cs
ylbtech-System.Web.Mvc.Controller.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicK ...
- .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程)
阅读目录: 1.开篇介绍 2.ASP.NETMVC IControllerFactory 控制器工厂接口 3.ASP.NETMVC DefaultControllerFactory 默认控制器工厂 4 ...
- MVC Controller Dependency Injection for Beginners【翻译】
在codeproject看到一篇文章,群里的一个朋友要帮忙我翻译一下顺便贴出来,这篇文章适合新手,也算是对MEF的一个简单用法的介绍. Introduction In a simple stateme ...
- 转:【Spring MVC Controller单例陷阱】
http://lavasoft.blog.51cto.com/62575/1394669/ Spring MVC Controller默认是单例的: 单例的原因有二:1.为了性能.2.不需要多例. 1 ...
- MVC Controller 链接到 API Controller 以及反向链接
MVC Controller 链接到 API Controller 以及反向链接 问题 想创建一个从 ASP.NET MVC controller 到 ASP.NET Web API controll ...
随机推荐
- CentOS下MySQL主从复制,读写分离
1.环境:所有系统都是CentOS5.5 mysql-5.6.31-2.el5,MySQL中都没有数据 主服务器IP为192.168.128.230 从服务器IP为192.168.128.235 代理 ...
- ASP.NET Core 2.2 基础知识(十五) Swagger
安装 Nuget 包 注册 Swagger public void ConfigureServices(IServiceCollection services) { services.AddMvc() ...
- apk打包
1.在导航栏中选择Builder->Generate Signed Apk 2.新建点击Creat new... 3.注意路径后面写apk的名字(这个名字将会显示在手机软件的下方)
- pythonGUI编程用Canvas模拟画板
代码如下: from tkinter import * import webbrowser root = Tk() w = Canvas(root,width=400,height=200) w.pa ...
- HTML5本地缓存localStorage和sessionStorage的操作方法收集
说明: Web Storage 包含如下两种机制: sessionStorage 为每一个给定的源(given origin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开 ...
- B/S架构 Web打印程序(Argox)
B/S架构 Web打印程序 对于B/S架构下的管理软件系统,在客户端浏览器页面中如何透过本地打印机或网络打印机打印条码标签,Argox提供最常用的2种类型打印机集成方案. ● PPLA 打印机IE游 ...
- rem 自适应
最近在写一个关于小说阅读的webApp,由于没有借用任何框架,所以很多底层的内容都需要自己去解决,幸好的是这次只是关于移动端的内容,还不至于去向着jquery的方向码代码.言归正传,前几天在处理底色切 ...
- golang中的那些坑之迭代器中的指针使用
今天在编写代码的时候,遇到了一个莫名其妙的错误,debug了半天,发现这是一个非常典型且易犯的错误.记之 示例代码: package main import "fmt" type ...
- ubuntu vim markdown 实时预览
vim-instant-markdown插件 该插件支持vim编辑markdown文件时实时预览,不需要手动做任何事情! 使用vim打开一个xxx.md文件,浏览器会自动打开一个预览网页,在编辑这个文 ...
- linux设置定制器自动执行任务
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 ...