javascript - jquery post获取空对象数组

标签 javascript c# jquery angularjs

我是 Angular.js 框架的新手。我正在获取数据,并使用 Angular 范围将其进一步分配给数组。

模态.CS:

 public class AppSetting1
{
    public int lng_AppSettings { get; set; }
    public string str_SettingName { get; set; }
    public string str_SettingValue { get; set; }
    public string str_Type { get; set; }

    public AppSetting1(int _lng_AppSettings, string _str_SettingName, string _str_SettingValue, string _str_Type)
    {
        lng_AppSettings = _lng_AppSettings;
        str_SettingName = _str_SettingName;
        str_SettingValue = _str_SettingValue;
        str_Type = _str_Type;
    }
}

 internal string GetAppSettings()
        {
            try
            {

                    List<AppSetting1> objAppsettings = new List<AppSetting1>();
                    objAppsettings.Add(new AppSetting1(1,"Name1","Value1","Type"));
                    objAppsettings.Add(new AppSetting1(2, "Name2", "Value2", "Type2"));
                    return JsonConvert.SerializeObject(objAppsettings, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Controller .CS:

   [AuthCheckService, SessionCheckService]
    [HandleModelStateException]
    public string GetAppSettings()
    {
        try
        {
           ManageAppSettings accExec = new ManageAppSettings();
           return accExec.GetAppSettings();
        }
        catch (Exception ex)
        {
            throw new ModelStateException(ex.Message, ex.InnerException);
        }
    }

    [HttpPost]
    public JsonResult SaveSettings(List<AppSetting1> AppSetting)
    {
        try
        {
            ManageAppSettings accExec = new ManageAppSettings();
            return Json(AppSetting, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            throw new ModelStateException(ex.Message, ex.InnerException);
        }
    }

Angular.js:

(function () {
var app = angular.module('myAppSeetings', []);
app.controller('AppSettingsController', function ($scope) {

    $scope.items = [];
    $scope.SaveSettings = function () {
        if (validate()) {
            var token = $('[name=__RequestVerificationToken]').val();
            var test = $scope.items;
            $.ajax({
                beforesend: showProgress(),
                type: 'POST',
                headers: { "__RequestVerificationToken": token },
                url: getAppPath() + 'AppSettings/SaveSettings',
                dataType: 'json',
                data: { AppSetting: $scope.items },
                success: function (result) {
                    if (result != "") {
                        //ShowSaveMessage(result);
                        //fetchData();
                        //$('#EditPopUp').css('display', 'none');
                        //$('#exposeMaskManageUser').css('display', 'none');
                        //clearForm();
                    }
                    else
                        ShowErrorPopup('An error has occurred. Please contact System Administrator.');
                },
                complete: hideProgress,
                error: function (ex) {
                    ShowErrorPopup('An error has occurred. Please contact System Administrator.');
                }
            });
        }
        else {
            ShowWarningMessage('Required fields must be completed prior to completing the work');
        }
    };

    function fetchData() {

        var token = $('[name=__RequestVerificationToken]').val();
        $.ajax({
            beforesend: showProgress(),
            type: 'GET',
            headers: { "__RequestVerificationToken": token },
            url: getAppPath() + 'AppSettings/GetAppSettings',
            dataType: 'json',
            success: function (data) {
                // console.log(data);
                $scope.items = data;
                $scope.$apply();
                console.log($scope.items);
            },
            complete: hideProgress,
            error: function (ex) {
                ShowErrorPopup('An error has occurred. Please contact System Administrator.');
            }
        });
    };

    function validate() {
        var val = true;
        if ($("input").val().trim() == "") {
            val = false;
        }
        return val;
    }
    fetchData();
});

})();

问题:

点击保存后,我在服务器端得到空值。我这里哪里出错了?

最佳答案

尝试添加 contentType: 'application/json; charset=utf-8',

See this answer

关于javascript - jquery post获取空对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519435/

相关文章:

javascript - 对象的nodejs console.log

javascript - 如何在 DOJO 中禁用向导 Pane 的 "Next"按钮

c# - STL双端队列是作为循环链表实现的吗?

javascript - 如何默默地保证在页面卸载时执行 ASP.NET MVC3 操作

jquery - 使用来自 AJAX 调用的图像 URL 获取数据?

javascript - 单击提交按钮时,php session 不适用于表单

javascript - jChartFX 没有动画

c# - 模拟 msbuild 过程的程序集解析

c# - 如何在 WPF 应用程序中配置 StructureMap?

javascript - 包含用户添加的行以及每行上的输入元素查找的表单