我有一个表单来输入键值对列表。当我在输入字段中输入数据或添加新的键值对时,一切都在客户端显示正常,我可以看到模型更新。当我去保存新创建的列表时,问题出现了。列表将被传递到角度保存功能,并且所有数据都已就绪。角度保存功能和我的MVC控制器保存功能之间出现问题。正确数量的键值对将被发送到MVC控制器函数参数,但所有信息现在都已设置为null。
所以在客户端,我的模型看起来像这样。
[{"Key":"this","Value":"has"},{"Key":"data","Value":"in"},{"Key":"it","Value":"see"}]
这就是我想要的,但当它作为参数到达我的MVC控制器时,它看起来像这样。
[{"Key":null,"Value":null},{"Key":null,"Value":null},{"Key":null,"Value":null}]
这不是我想要的。任何有关这方面的帮助将不胜感激。谢谢。
这是我的MVC控制器功能。
public JsonResult SaveSettings(List<KeyValuePair<string, string>> replacementPaths)
{
JobSchedulerConfig config;
config = Biz.GetConfig();
config.ReplacementPaths = replacementPaths;
return null;
}
我的Angular控制器和保存逻辑。
$scope.save = function () {
SettingsService.saveSetting($scope.settings)
.success(function (data) {
//alert(data);
})
.error(function (error) {
$scope.status = 'Unable to load data: ' + error.message;
});
};
SettingsApp.factory('SettingsService', ['$http', function ($http) {
var SettingsService = {};
SettingsService.getSettings = function () {
return $http.get('@Url.Action("GetReplacementPaths", "Setting")');
};
SettingsService.saveSetting = function (data) {
//alert(data);
alert(data.toSource());
//data = angular.stringify(data);
return $http.post('@Url.Action("SaveSettings", "Setting")', data );
};
return SettingsService;
}]);
我的观点标记。
<div ng-app="SettingsApp">
<div ng-controller="SettingsController">
<div ng-repeat="kvp in settings">
<input ng-model="kvp.Key" />
<input ng-model="kvp.Value" />
<button ng-click="delete(settings, kvp)">Delete</button>
</div>
<button class="btn btn-default" ng-click="addSetting()">Add Setting</button>
<button type="submit" name="config" ng-click="save()" class="btn btn-default btn-primary">Save Config</button>
{{settings}}
</div>
</div>
再次感谢您的帮助。