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 ...
随机推荐
- HDU 多校1.3
Colorful Tree Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- AMQ学习笔记 - 04. 消息选择器
概述 消息选择器使用类似于SQL语法,为Consumer指定基于Message属性的筛选条件. 消息选择器 发送的时候,给消息添加一些属性:在接收的时候,根据属性进行过滤. API javax.jms ...
- [BZOJ 2006] 超级钢琴
Link: https://www.lydsy.com/JudgeOnline/problem.php?id=2006 Algorithm: 对于此类区间最值类问题,我们可以通过控制一端不变来寻找当前 ...
- Codeforces 920 G List Of Integers
题目描述 Let's denote as L(x,p)L(x,p) an infinite sequence of integers yy such that gcd(p,y)=1gcd(p,y)=1 ...
- HDOJ 5385 The path
Dicription You have a connected directed graph.Let $d(x)$ be the length of the shortest path from $1 ...
- STL之priority_queue2
描述 使用STL中的优先队列,将一个字符串中的各个字符按照ASCII从小到大顺序排列. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { int n; cin&g ...
- iOS键盘监听事件
1.注册键盘通知事件 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; // 键盘将出现事件监听 [center ...
- Java下List使用subList实现分页获取
java.util.List中有一个subList方法,用来返回一个List的一部分的视图. List<E> subList(int fromIndex, int toIndex); 它返 ...
- OpenDigg - 挖掘优质开源项目库
OpenDigg - 挖掘优质开源项目库 OpenDigg专注于挖掘优质的开源项目库,通过技术和人工将软件项目分类整理,同时辅助简要的编译,方便广大程序员便捷地找到需要的开源项目. OpenDigg刚 ...
- Java 和 数据库两种方式进行加锁
java方式: publicstatic synchronized int generate(StringtableName){ Stringsql = "select value from ...