【问题标题】:Angularjs $http.post, asp.net mvc controller gets nullAngularjs $http.post,asp.net mvc 控制器为空
【发布时间】:2013-10-15 02:56:13
【问题描述】:

在我的 Angularjs 服务中,我有以下代码:

$http.post("/EditWorkout/GetId", data).error(function (responseData) {
            console.log("Error !" + responseData);
        });

我的 ASP.net 控制器中有这个方法:

       [System.Web.Http.HttpPost]
        public JsonResult GetId(string routineId)
        {
            try
            {
                string x = routineId;
                return Json(new {success = true});
            }
            catch (Exception ex)
            {

                return Json(new { success = false, errorMessage = ex.Message });
            }

        }

我在return Json(new {success = true}); 上设置了一个断点,它被触发了,但我的routineId 出于某种原因为空,而我使用angular 的$http.post 发送的数据不是。

为什么会这样?

【问题讨论】:

  • data 变量里面有什么?发送的Content-Type 请求标头是什么?查看您的 Google Chrome 浏览器的开发控制台以查看发出的确切请求。
  • 是的,它是一个变量,我什至试过用“sometext”代替数据,Content-Type 是 application/json;charset=utf-8
  • 并且状态码是 HTTP/1.1 200 OK

标签: javascript asp.net-mvc asp.net-mvc-4 angularjs


【解决方案1】:

试试这个:

$http.post("/EditWorkout/GetId", { routineId : data}).error(function (responseData) {
            console.log("Error !" + responseData);
        });

【讨论】:

  • 和...为什么这样有效?是不是因为routineId在controller和json对象中是同名的?
  • @chiliYago 是正确的。您的 JSON 将被解析为作为 API 控制器上的参数的 C# 对象,因此它们必须匹配,否则会出错。
猜你喜欢
  • 2016-07-16
  • 2015-02-12
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 2018-06-18
  • 2016-09-06
相关资源
最近更新 更多