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. HDU 6043 KazaQ's Socks (规律)

    Description KazaQ wears socks everyday. At the beginning, he has nn pairs of socks numbered from 11  ...

  2. Vue实例对象的数据选项

    前面的话 一般地,当模板内容较简单时,使用data选项配合表达式即可.涉及到复杂逻辑时,则需要用到methods.computed.watch等方法.本文将详细介绍Vue实例对象的数据选项 data ...

  3. 第一个简单的python程序,模拟购物车

    第一个pyhone程序,简单的购物车功能,刚开始学习,练习下手感. #/usr/bin/env python#-*- coding:utf-8 -*- salary = int(raw_input(& ...

  4. HDU 1513 Palindrome:LCS(最长公共子序列)or 记忆化搜索

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 题意: 给你一个字符串s,你可以在s中的任意位置添加任意字符,问你将s变成一个回文串最少需要添加 ...

  5. Node.js之错误处理与断言处理

    Node.js之错误处理与断言处理 1. 使用 domain 模块处理错误 try..catch 多用于捕捉同步方法中的抛出错误,但不能用try..catch捕捉异步方法中抛出de错误 如: 1 va ...

  6. css div旋转之后自适应

    css: .rotate90deg { transform: rotate(90deg); -ms-transform: rotate(90deg); /* IE 9 */ -moz-transfor ...

  7. LINQ Distinct()

    using System; using System.Collections.Generic; using System.Linq; namespace LinqTest { class Progra ...

  8. synchronized VS Lock, wait-notify VS Condition

    最近在看Java Threads第三版,收获颇多.全英文阅读,感觉真的是爽歪歪.推荐大家都看看. 这一篇想系统的讲一讲,线程之间通信的2种模式,wait-notify 和 Condition. 先上一 ...

  9. C#操作EML邮件文件实例(含HTML格式化邮件正文和附件)

    使用QQ邮箱.163邮箱等导出的EML邮件,包含了邮件的发件人.主题.内容.附件等所有信息,该实例就如何解析这些信息,并在编辑后保存做个Demo. 如下图所示,EML文件是编码后的文本文件,可以使用正 ...

  10. 你以为你真的会用编辑器----之Emacs

    Emacs... -------------------------- EMACS,即Editor MACroS(编辑器宏)的缩写,Emacs,著名的集成开发环境和文本编辑器.Emacs被公认为是最受 ...