ASP.NET 控制器

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对象。

时间: 2024-10-09 08:33:01

ASP.NET 控制器的相关文章

ASP.NET 控制器和动作方法

1.什么样的类能成为控制器? 在ASP.NET MVC 中,直接或者间接地实现了IController接口的类,就会被Mvc框架认为是控制器. using System.Web.Routing; namespace System.Web.Mvc { public interface IController { void Execute(RequestContext requestContext); } } 从代码中,看到此接口有一个唯一的方法Execute,此方法会在请求到达控制器的时候被调用.

【ASP.NET MVC 牛刀小试】 ASP.NET MVC 路由

例子引入 先看看如下例子,你能完全明白吗? 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using System.Web.Routing; 7 8 namespace MVCDemo 9 { 10 public class RouteConfig 11 { 12 public static void Re

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

在ASP.NET MVC 6中,view components (VCs) 功能类似于虚拟视图,但是功能更加强大. VCs兼顾了视图和控制器的优点,你可以把VCs 看作一个Mini 控制器.它负责控制应用中的某一功能模块,例如: 动态导航菜单 标签云 登录面板 购物车 最近文章 博客侧边栏 假如使用VC 创建了登录面板,可以在很多场景中调用,例如: 用户没有登录 用户已登录,需要退出使用其他帐号登录或者管理其他帐号. 如果当前登录角色为管理员,渲染管理员登录面板 你可以根据用户的需求获取数据进行

Visual Studio 2017 RC 下载 最新版本的发行说明

我们非常荣幸地宣布 Visual Studio 2017 RC 现已推出! 此新版本包括我们最新的功能创新和改进. 注意 这里是 Visual Studio 2017 最新版本的发行说明. 下载:Visual Studio Enterprise 2017 RC 若要了解有关其他相关下载的详细信息,请参阅下载页. 另请参阅 Visual Studio 2017 系统要求和 Visual Studio 2017 平台目标以及兼容性. 重要事项 虽然一般情况下支持在生产环境中使用 Visual Stu

大家好

http://www.yugaopian.com/people/259723 http://www.yugaopian.com/people/259744 http://www.yugaopian.com/people/259783 http://www.yugaopian.com/people/259824 http://www.yugaopian.com/people/259839 http://www.yugaopian.com/people/259933 http://www.yugao

阿哥吗卡怪每次哦阿哥看啦过啦嘎开吃麻辣个啊蓝光

http://www.xx186.com/web/web_kpic.asp?id=156613http://www.xx186.com/web/web_kpic.asp?id=156608http://www.xx186.com/web/web_kpic.asp?id=156605http://www.xx186.com/web/web_kpic.asp?id=156602http://www.xx186.com/web/web_kpic.asp?id=156600http://www.xx18

风格更家霍建华

http://www.9ku.com/fuyin/daogaoo.asp?dgid=119864http://www.9ku.com/fuyin/daogaoo.asp?dgid=119867http://www.9ku.com/fuyin/daogaoo.asp?dgid=119876http://www.9ku.com/fuyin/daogaoo.asp?dgid=119879http://www.9ku.com/fuyin/daogaoo.asp?dgid=119883http://www

,了可美军以本合同个v分

http://shike.gaotie.cn/zhan.asp?zhan=%A1%FE%CE%F7%B0%B2%B8%B4%B7%BD%B5%D8%B7%D2%C5%B5%F5%A5%C6%AC%C4%C4%C0%EF%C2%F2Q%A3%BA%A3%B1%A3%B1%A3%B2%A3%B7%A3%B4%A3%B0%A3%B1%A3%B1%A3%B7%A3%B5%A1%F4 http://shike.gaotie.cn/zhan.asp?zhan=%A8%7D%CD%AD%B4%A8%B8%B4

学习ASP .NET MVC5官方教程总结(六)通过控制器访问模型的数据

学习ASP .NET MVC5官方教程总结(六)通过控制器访问模型的数据 在本章中,我们将新建一个MoviesController 控制器,并编写获取电影数据的代码,使用视图模板将数据展示在浏览器中. 在进行下一步之前,你需要先编译应用程序,否则在添加控制器的时候会出错. 在解决方法资源管理器的Controllers文件夹右键,选择"添加">"新建搭建基架项": 在"添加支架"对话框,选择 包含视图的MVC 5控制器(使用 En),然后单击