1.继承Controller
 public class TestController : Controller

2.编写控制器方法
    // URL  :   test/Edit/1
        [HttpPost]//http请求方式
        public ActionResult Edit(int id, FormCollection collection)
        {
    //public (必须返回类型) 名称  (参数类型 参数,FormCollection:获取表单数据)  
            try
            {
                // TODO: Add update logic here

return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

3.返回值类型:

在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求:

必须是一个public方法
    必须是实例方法
    没有标志NonActionAttribute特性的(NoAction)
    不能被重载

Asp.net MVC中Controller返回值类型:

ActionResult:返回视图,model对象()
    ViewResult:返回视图
    ContentResult:返回字符串(可以用于json 字符串)
    JsonResult:返回JsonResult类型(返回json)
    RedirectToRouteResult:控制器跳转控制器

参考资料:http://blog.csdn.net/pasic/article/details/7110134

ViewResult

返回值为ViewResult即返回展示给用户的前台页面(视图),return View()可以返回本控制器内的任意视图。当return View()返回与Action不同名的视图时会直接展示视图,而不是执行对应的Action方法。

public ViewResult Index()
{
UserInfoModel userInfoModel = new UserInfoModel();
userInfoModel.AddTime = DateTime.Now;
userInfoModel.UserName = "用户名";
int number = 123;
//【重载1】默认返回与Action同名的视图
return View();
//【重载2】返回本控制器下的Add视图
return View("Add");
//【重载3】一般传递的参数对象的类型与视图的模型类一致
return View("Add", userInfoModel);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

ContentResult

ContentResult用于将字符串直接向客户端输出。
后台代码:

public ContentResult GetUserInfo()
{
string userInfo = "[{\"UserName\":\"蝈蝈\",\"Age\":\"18\",\"PhoneNumber\":\"18233199999\"}," +
"{\"UserName\":\"果果\",\"Age\":\"16\",\"PhoneNumber\":\"18233199999\"}," +
"{\"UserName\":\"郭郭\",\"Age\":\"20\",\"PhoneNumber\":\"18233199999\"}]";
return Content(userInfo);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

前台代码:

function TestActionResult_Index_AddUserInfo1(userInfo) {
//先把字符串转换为Json对象
var userInfoArray = JSON.parse(userInfo);
for (var i = 0; i < userInfoArray.length; i++) {
$("<tr></tr>").append("<td>" + userInfoArray[i].UserName + "</td>")
.append("<td>" + userInfoArray[i].Age + "</td>")
.append("<td>" + userInfoArray[i].PhoneNumber + "</td>")
.appendTo($("#TestActionResult_Index_tb"));
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

JsonResult

JsonResult首先将指定的对象序列化为Json字符串,然后将字符串写入到HTTP输出流。由于Json字符串在MVC前后台交互过程中使用频率很高,所以多举几个例子。
1)返回Json数组

public JsonResult GetUserInfoJsonArray()
{
List<object> userInfoList = new List<object>();
//userInfoList添加匿名对象
userInfoList.Add(new
{
UserName="蝈蝈",Age=18,PhoneNumber="18233199999"
});
userInfoList.Add(new
{
UserName="果果",Age=16,PhoneNumber="18233199999"
});
userInfoList.Add(new
{
UserName="郭郭",Age=20,PhoneNumber="18233199999"
});
//如果请求方式为get,则必须设置JsonRequestBehavior.AllowGet
return Json(userInfoList, JsonRequestBehavior.AllowGet);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1

2)返回Json对象

public JsonResult GetUserInfoJsonObject()
{
List<object> userInfoList = new List<object>();
userInfoList.Add(new
{
UserName = "蝈蝈",Age = 18,PhoneNumber = "18233199999"
});
userInfoList.Add(new
{
UserName = "果果",Age = 16,PhoneNumber = "18233199999"
});
userInfoList.Add(new
{
UserName = "郭郭",Age = 20,PhoneNumber = "18233199999"
});
//【方法1】返回匿名对象或实例对象
var resultList = new
{
Company = "热血传奇",
President = "蝈蝈",
UserInfoList = userInfoList
};
return Json(resultList, JsonRequestBehavior.AllowGet);
//【方法2】返回Dictionary对象
Dictionary<string, object> dict = new Dictionary<string, object>()
{
{"Company","热血传奇"},
{"President","蝈蝈"},
{"UserInfoList",userInfoList}
};
return Json(dict, JsonRequestBehavior.AllowGet);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 2

RedirectToRouteResult

RedirectToRouteResult可以跳转到本项目内任意控制器的Action,当重定向路由时会根据参数执行对应的控制器下的Action方法,而不是直接展示页面。

public ViewResult Index()
{
UserInfoModel userInfoModel = new UserInfoModel();
userInfoModel.AddTime = DateTime.Now;
userInfoModel.UserName = "用户名";
int number = 123;
//【重载1】访问Home控制器下的Add方法
return RedirectToAction("Add", "Home");
//【重载2】访问Home控制器下的Add方法,并且参数id=6
return RedirectToAction("Add", "Home", new {id = 6});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

ContentResult与JsonResult返回Json数据的区别

1.当返回到前端的json数据,不标准时如–”{\”Age\”:\”abcde\”,\”name\”:\”rer\”}”,前端抓包的值和我给的一样。不管你的返回值类型是
JsonResult还是String,都需要使用JSON.parse(Data)手动转换一下,才能把字符串变为JSON对象。
2.当返回到前端的json数据,标准时如–”{“Age”:”abcde”,”name”:”rer”}”,前端抓包的值和我给的一样。
只需要保证响应报文头的ContentType = “application/json,JQ 都会自动把JSON字符串转换为JSON对象。

ASP.NET 控制器的更多相关文章

  1. ASP.NET MVC实现仪表程序

    1.1.1 摘要 在大多数情况下,我们的Web程序不仅仅需要给用户提供具体数据,在一些情况下,我们还需要给高级的用户或管理者提供数据汇总和分析图表之类的功能. 如果我们不想显示一大堆烦心的数据,希望通 ...

  2. ASP.NET 5系列教程 (三):view components介绍

    在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs 看作一个Mini 控制器.它负责控制 ...

  3. Asp.net面试题

    Asp.net核心技术思想 1.概述反射和序列化 反射:程序集包含模块,而模块包含类型,类型又包含成员.反射则提供了封装程序集.模块和类型的对象.您可以使用反射动态地创建类型的实例,将类型绑定到现有对 ...

  4. ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单的Api搭建

    哈喽各位 我又回来了! 前段时间研究了下ASP.NET,刚开始也是随便找网上的各种教程来看,但是鉴于本人技术有限,还是走了相当长的一段弯路的.所以我写下了这篇文章.希望各位刚刚入坑的ASP.NET开发 ...

  5. ApacheCN Asp.NET 译文集 20211126 更新

    ASP.NET Core2 基础知识 零.前言 一.搭建舞台 二.控制器 三.视图 四.模型 五.验证 六.路由 七.RestBuy 八.添加功能.测试和部署 ASP.NET Core3 和 Angu ...

  6. 译文: async/await SynchronizationContext 上下文问题

    async / await 使异步代码更容易写,因为它隐藏了很多细节. 许多这些细节都捕获在 SynchronizationContext 中,这些可能会改变异步代码的行为完全由于你执行你的代码的环境 ...

  7. view components介绍

    view components介绍 在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs ...

  8. .net解决Xss攻击

    首先要明白什么是Xss攻击 XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.比如这些代码包括HTML代码和客户端脚本.攻击者利用XSS漏 ...

  9. cache、session与cookie

    cache.session.cookie的区别 session把数据保存在服务器端,每一个用户都有属于自己的Session,与别人的不冲突 就是说,你登陆系统后,你的信息(如账号.密码等)就会被保存在 ...

随机推荐

  1. 使用Hibernate模板调用存储过程

    前提是该Dao类已经已经继承了org.springframework.orm.hibernate5.support.HibernateDaoSupport,并且在整个项目中已经配置好了事务,或者是手动 ...

  2. 异步加载回来的数据不受JS控制了

    写成下面这种方式时,异步加载回来的数据不受JS控制 $(."orderdiv").click(function(){ $(this).find(".orderinfo&q ...

  3. 【HTTP权威指南】第二章-URL与资源

    [统一资源定位符URL]通过位置来标示资源,其表达的格式如下:https://item.jd.com/523961.html 第一部分(https)是方案,告知客户端要[怎样访问],这里使用的是htt ...

  4. Luogu P2966 [USACO09DEC]牛收费路径Cow Toll Paths

    题目描述 Like everyone else, FJ is always thinking up ways to increase his revenue. To this end, he has ...

  5. 【有意思的BUG】需要停止的进程

    用户操作的目的:将某网站的歌曲分享到朋友圈 用户遇到的问题:在朋友圈内,有2个入口可以播放该第三方的歌曲.但是这两个入口可以同时播放,音乐重叠了. 操作步骤: [1] 将歌曲分享到朋友圈 [2] 在朋 ...

  6. 【NO.7】HTTP请求-参数化

    http://123.456.7.89:8080/article/relation/channel/0038/keyword/movie/start/0/size/20/ 简单说一下这个URL的意思也 ...

  7. Linux操作系统-命令-vmstat

    叨叨两句 涉及监控服务器性能的命令,除了有vmstat之外,还有top.iostat.netstat.本文只是介绍一下这4个命令中的1个.剩下的3个命令可以参考以下网上的资料就差不多能会了. 推荐to ...

  8. Cmd Markdown 学习

    [TOC] # Cmd Markdown 学习 Markdown 简明语法 1. 斜体和粗体 使用 * 和 ** 表示斜体和粗体. 2. 分级标题 在使用 = 表示一级标题,使用 - 表示二级标题.# ...

  9. OC版贪吃蛇

    昨天写了一个js版贪吃蛇,今天突然想写一个OC版的,来对比一下两种语言的区别 oc版功能,适配所有尺寸iphone,可暂停,可设置地图和蛇的比例,可加速 对比一下会发现js版的相对OC版的会简单一些, ...

  10. 0721JS

    输入三个整数,x,y,z,最终以从小到大的方式输出 <!--<script> var x=prompt("请输入数字") var y=prompt("请 ...