List <keyvaluepair <string,string =“”>&gt; MVC / Angular表单保存问题

时间:2015-11-20 16:15:19

标签: javascript c# angularjs asp.net-mvc-5

我有一个表单来输入键值对列表。当我在输入字段中输入数据或添加新的键值对时,一切都在客户端显示正常,我可以看到模型更新。当我去保存新创建的列表时,问题出现了。列表将被传递到角度保存功能,并且所有数据都已就绪。角度保存功能和我的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>

再次感谢您的帮助。

0 个答案:

没有答案