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 ...
随机推荐
- 高效mysql的习惯(程序员版本)
高效的mysql 一定要有主键 如果没有主键: 数据多次读写后可能更离散,有更多随机I/O MySQL复制环境中,如果选择RBR模式,没有主键的update需要读全表,导致复制延迟 好的主键特点: 没 ...
- [BZOJ 4033] 树上染色
Link: BZOJ 4033 传送门 Solution: 此题用到了计算贡献的方法, 将 多条路径的路径和 $->$ $\sum_{i=1}^{n-1} w[i]*cnt[i]$ 这样我们由 ...
- [APIO2015]巴厘岛的雕塑
题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 NN 座雕塑,为方便起见,我们把这些雕塑从 11 到 NN 连续地进行标号,其中第 ii 座雕塑的年龄是 Y ...
- 【分块打表】Gym - 100923K - Por Costel and the Firecracker
semipal.in / semipal.out Por Costel the pig, our programmer in-training, has recently returned from ...
- [读书笔记]iOS 7 UI设计 对比度
好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的 ...
- jQuery判断一个元素是否为另一个元素的子元素
判断:当前元素是否是被筛选元素的子元素 jQuery.fn.isChildOf = function(b){ return (this.parents(b).length > 0); }; 判断 ...
- 通过UIImagePickerController选取的图片名称信息
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDic ...
- 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
- linux之touch命令修改文件的时间戳
功能:对已经存在文件的时间进行修改,存取时间(access time).修改时间(modification time).对不存在的文件,进行创建新的空白文件. 语法:touch [选项] 文件 ...
- Android应用内 代码截屏(获取View快照)和 禁止截屏
1. 应用内的代码截屏(获取View的快照) Android的View类中提供了获取控件绘制缓存的方法,这种截屏的方式仅限于应用内自己的Activity界面,不需要任何权限,严格来说该方法不属于截屏, ...