mvc的Controller返回值类型ActionResult详解

一、简介

ActionResult 

操作方法通过执行工作并返回操作结果来响应用户输入。 操作结果表示框架将代表操作方法执行的命令。 ActionResult 类是操作结果的基类。

以下类型从 ActionResult 派生:

  地址:https://msdn.microsoft.com/zh-cn/library/system.web.mvc.actionresult.aspx?f=255&MSPPError=-2147217396

  我们预览下控制器的基类Controller

  

简单示例

 javascript

<script type="text/javascript"> 
$(function () {
        $("#ControlId").change(function () {//ControlId为下拉控件ID
            var value = $(this).val();//获取到当前选中的值
            if (value != null) {    //Ajax获取舱位,并设置复选框
                $.post(          //POST
                 $("#getUrl").val(),  //url
                 { fmid: value },    //data
                  function (data) {   //success:
                      document.getElementById("id_ccl").innerHTML = "";
                      var strHtml = "";
                      var vIsShared = "";
                      for (var key in data) {
                          for (var result in data[key]) {
                              switch (result.toString()) {
                                  case "IsShared":
                                      {
                                          vIsShared = data[key][result];
                                          break;
                                      }
                                  default: break;
                              }
                          }
                          strHtml += "<input type=\"checkbox\" id=\"chk\" " + (vIsShared == true ? " checked=\"checked\" " : " ") + " name=\"chk\" value=\"true\" />";
                      }
                      document.getElementById("id_ccl").innerHTML = strHtml;
                  }
                  , "json" );  //type
            }
            else alert(value);
        });
    });
</script>

MVC Controllor:
[HttpPost]
public ActionResult GetList(int id)
{
   return Json(eccList);
}
[HttpGet]
public ActionResult GetList(int id)
{
   return Json(eccList, JsonRequestBehavior.AllowGet);
}

在MVC下,由于对数据的保护,默认情况下request为post,使用GET请求会被阻止。

如果客户端使用get请求,需要设置behavior为JsonRequestBehavior.AllowGet 。

二、IHttpActionResult

1、Json<T>(T content)

 return Json<List<ORDER>>(lstRes);

2、Ok()、 Ok<T>(T content)

 return Ok();
 return Ok<string>(name);

3、NotFound()

  return NotFound();

当需要向客户端返回找不到记录时,有时需要用到NotFound()方法
NotFound()方法会返回一个404的错误到客户端。

4、其他

其他还有一些方法,都有它特定的用途。在此贴出来。

4.1、Content<T>(HttpStatusCode statusCode, T value)

   [HttpGet]
        public IHttpActionResult GetContentResult()
         {
            return Content<string>(HttpStatusCode.OK, "OK");
        }

向客户端返回值和http状态码。

4.2、BadRequest()

 [HttpGet]
         public IHttpActionResult GetBadRequest(ORDER order)
         {
             if (string.IsNullOrEmpty(order.ID))
                 return BadRequest();
             return Ok();
         }

向客户端返回400的http错误。

4.3、Redirect(string location)

   [HttpGet]
        public IHttpActionResult RedirectResult()
        {
            return Redirect("http://localhost:21528/api/Order/GetContentResult");
        }

将请求重定向到其他地方。

相关: MVC控制器总结

参考:http://www.cnblogs.com/zfdcp-028/p/5788649.html


原文地址:https://www.cnblogs.com/xcsn/p/2843115.html