C# 将JSON对象发布到MVC控制器#
JS文件 HTML代码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
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 } };
}