2016-11-10 3 views
0

私はAngular.jsフレームワークが初めてです。私は、角度範囲を使用してさらに配列に割り当てるデータを取得しています。nullオブジェクト配列のjqueryポストを取得する

Modal.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(); 
}); 

})();

問題:私は、サーバー側でヌル取得しています]をクリックし、保存に

。私はここで間違っていますか?

+0

どこ代わりに' $缶.ajax'。その使い方をリンクしてください:https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects –

答えて

1

を増やしてみてください contentType: 'application/json; charset=utf-8',

私はangularjsで `XMLHttpRequest`を使用することをお勧め

See this answer

+0

ありがとうダミアン。私はこれを追加するのを忘れました:-) – Sunny

0

間違ってここにあなたのコード:

data: { AppSetting: $scope.items } 

それはあなたのsaveClick機能で

data: $scope.items 

する必要があります:$ scope.items今[]です。期待どおりの値が必要です。あなたのケースに依存し、それは、クライアントやテストのデフォルト値から次のとおりです。

$scope.items = [{lng_AppSettings: 1, str_SettingName : 'Name 1'}, 
       {lng_AppSettings: 2, str_SettingName : 'Name 2'}]; 
+0

ok、私はこれを試しています.. – Sunny

+0

まだnullになっています – Sunny

+0

あなたのデバッグコンソールに表示されているもの役職? –

関連する問題