如何将JSON数据发布到MVC 4控制器?

时间:2014-03-17 16:46:44

标签: c# asp.net-mvc json angularjs

我已按照以下方式设置我的控制器:

[HttpGet]
public ActionResult Contact()
{
      ViewBag.Message = "Your contact page.";

      return View();
}

[HttpPost]
public ActionResult Contact(string json)
{
      return Json(new { received=json });
}

正在使用Angular.JS发送请求,如下所示:

$scope.update = function (message) {
        $http({
            url: '/Contact',
            method: "POST",
            data: message
        }).success(function (data) {
            //$scope.master = angular.copy(message);
            $scope.master = data;
        }).error(function (data) {
            $scope.master = {message: "failed"}
        });
};

但我现在回复的回应是:

{
  "received": null
}

所以,我相信我的问题与我在控制器中定义的string json参数有关。 接收JSON的正确方法是什么?

更新1:

我将$ http请求更新为:

$scope.update = function (message) {
    $http({
        url: '/Contact',
        method: "POST",
        data: {json:message}
    }).success(function (data) {
        //$scope.master = angular.copy(message);
        $scope.master = data;
    }).error(function (data) {
        $scope.master = {message: "failed"}
    });
}; 

但我仍然得到相同的结果。

1 个答案:

答案 0 :(得分:3)

如下设置您的数据,否则MVC将期望参数名称应为id而不是json

 data: {json:JSON.stringify(message)}