Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将JSON对象发布到MVC控制器#_C#_Angularjs_Json_Asp.net Mvc - Fatal编程技术网

C# 将JSON对象发布到MVC控制器#

C# 将JSON对象发布到MVC控制器#,c#,angularjs,json,asp.net-mvc,C#,Angularjs,Json,Asp.net Mvc,JS文件 HTML代码 var module = angular.module('myApp', []); module.controller('myController', function ($scope, $http) { $scope.items = [{}]; $scope.users = {}; $scope.addfield = function () { $scope.items.push({}); } $scope.sa

JS文件

HTML代码

var module = angular.module('myApp', []);

module.controller('myController', function ($scope, $http) {
    $scope.items = [{}];
    $scope.users = {};
    $scope.addfield = function () {
        $scope.items.push({});
    }
    $scope.saveUser = function () {
        $scope.results = [];
        console.log($scope.users);

        $http({
            method: 'POST',
            url: '/Data/MethodTest',

            data:{
                users: $scope.users
            }

        }).success(function (data) {
            console.log(data)
        });

    }

});

教育详情
增加教育
.cs代码// 我正在尝试将获取的对象的值插入数据库。在此之前,我刚刚编写了反序列化对象的代码。到现在为止,我只得到从JS传递的空值//

<body data-ng-app="myApp" data-ng-controller="myController">
    <form name="educdetailsform" novalidate>
        <label>Education Details</label></br>
        <button ng-click="addfield()">Add Education</button>
        <div ng-repeat="item in items track by $index">
            <input type="text" name="empData.qualification[]" placeholder="Qualification" ng-model="users[$index].qualification">
            <input type="text" name="empData.year[]" placeholder="Year of Passing" ng-model="users[$index].year">
            <input type="text" name="empData.percentage[]" placeholder="Percentage" ng-model="users[$index].percentage">
        </div>
        <input type="submit" name="submit" ng-click="saveUser()" />
    </form>
    </div>
</body>
publicJSONResult方法测试(字符串jsonData)
{
字符串jdata=jsonData.ToString();
列出股票数据;
布尔状态=假;
JavaScriptSerializer jss=新的JavaScriptSerializer();
stockData=jss.Deserialize(jdata);
状态=真;
返回新的JsonResult{Data=new{status=status};
}

默认情况下,仅从主体解析复杂参数。您需要为字符串添加[FromBody]前缀

 public JsonResult MethodTest(string jsonData)
         {
             string jdata = jsonData.ToString();
             List<StockAllocate> stockData;
             bool status = false;


                JavaScriptSerializer jss = new JavaScriptSerializer();
                stockData = jss.Deserialize<List<StockAllocate>>(jdata);
                 status = true;


             return new JsonResult { Data = new { status = status } };
         }
但如果你不知道:

public JsonResult MethodTest([FromBody]string jsonData)
publicJSONResult方法测试(列出jsonData)

这也是可能的

尝试将CS控制器中的输入参数从“jsonData”重命名为“users”(您在JS
$scope.saveUser
$http.post
数据中使用的参数)

否则,请尝试以下代码:

public JsonResult MethodTest(List<StockAllocate> jsonData)
另外,别忘了用[HttpPost]装饰你的CS函数MethodTest

$http.post('/Data/MethodTest/', {users: $scope.users})
.success(function(data){
  // Code here
})
.error(function(result){
 // code here
});
[HttpPost]
公共JsonResult MethodTest(字符串用户)
{
字符串jdata=users.ToString();
列出股票数据;
布尔状态=假;
JavaScriptSerializer jss=新的JavaScriptSerializer();
stockData=jss.Deserialize(jdata);
状态=真;
返回新的JsonResult{Data=new{status=status};
}

希望这有帮助。谢谢。

参考[HttpPost]公共JsonResult方法测试(列出jsonData){bool status=false;使用(InventoryonlineEntities dc=new InventoryonlineEntities()){foreach(jsonData中的变量e){dc.StockAllocates.Add(e);dc.SaveChanges();}status=true;}返回新的JsonResult{Data=new{status=status}};}我已经做了上面的更改。JSON仍然传递空值。更改了公共JsonResult MethodTest(字符串用户)和JS代码。仍然没有任何好处。@Test:您可以参考他的帖子-。这肯定会对您有所帮助。谢谢。
[HttpPost]    
public JsonResult MethodTest(string users)
             {
                 string jdata = users.ToString();
                 List<StockAllocate> stockData;
                 bool status = false;


                    JavaScriptSerializer jss = new JavaScriptSerializer();
                    stockData = jss.Deserialize<List<StockAllocate>>(jdata);
                     status = true;


                 return new JsonResult { Data = new { status = status } };
             }