2016-11-28 6 views
0

Guysオブジェクトの配列の値をとり、ajaxからwebmethodを打っていますが、その配列のキーと値を取得できません。以下は私のAjaxコードオブジェクト配列のキーと値を取得する#

var ShedulerTableCount = $('#dvSave table').length; 
      var ShedulersData = []; 
      ShedularCount = new Object({ ShedulerCount: $('#txtTimeSeries').val() }) 
      ShedulersData.push(ShedularCount); 
      for(var k=1; k <= ShedulerTableCount ; k++) 
      { 
       var tableId = $('#tblTimeInterval' + k); 
       tableId.find('tbody tr').each(function (i, el) { 
        Shedularobj = new Object({ ShedularName:'',InterVal: '', TimeSeries: '', LockingPeriod: '', TradeDuration: '', Min: '', Max: '', Touch: '', NoTouch: '', IPG: '', IPGDeduction: '', Closeable: '', txtTimeSeries: '', txtGap: '', txtRollingInterval:'' }); 
        var $tds = $(this).find('td'); 
        Shedularobj.ShedularName = 'sheduler ' + k; 
        Shedularobj.InterVal = $tds.find('label').eq(0).text(); 
        Shedularobj.TimeSeries = $tds.find('label').eq(1).text(); 
        Shedularobj.LockingPeriod = $tds.find('input').eq(0).val(); 
        Shedularobj.TradeDuration = $tds.find('input').eq(1).val(); 
        Shedularobj.Min = $tds.find('input').eq(2).val(); 
        Shedularobj.Max = $tds.find('input').eq(3).val(); 
        Shedularobj.Touch = $tds.find('input').eq(4).val(); 
        Shedularobj.NoTouch = $tds.find('input').eq(5).val(); 
        Shedularobj.IPG = $tds.find('input').eq(6).val(); 
        Shedularobj.IPGDeduction = $tds.find('input').eq(7).val(); 
        Shedularobj.Closeable = $tds.find('input').eq(8).val(); 
        Shedularobj.txtTimeSeries = $('#txtTimeSeries').val(); 
        Shedularobj.txtGap = $('#txtGap').val(); 
        Shedularobj.txtRollingInterval = $('#txtRollingInterval').val(); 
        ShedulersData.push(Shedularobj); 

       }); 
      } 

     $.ajax({ 
        type: "POST", 
        url: "BinarySetting.aspx/SaveShedulers", 
        data: "{ShedulersData:" + JSON.stringify(ShedulersData) + "}", 
        contentType: 'application/json; charset=utf-8', 
        success: function (XMLHttpRequest, textStatus, errorThrown) { 
         alert('Success'); 
        }, 
        error: function (result) { 
         alert('error'); 
        } 
       }); 

であり、これは、私は、オブジェクトのキーと値を取得する場所から私のC#のコードです:

[WebMethod] 
    public static string SaveShedulers(object[] ShedulersData) 
    { 
     object objCount = ShedulersData[0]; 
     // System.Reflection.PropertyInfo pi = objCount.GetType().GetProperty("Value"); 
     var ss = objCount.GetType().GetProperties().Single(pi => pi.Name == "ShedularCount").GetValue(objCount, null); 
     return "ss"; 
    } 

私も理解してスクリーンショットを添付するつもりですより明確なシナリオ:

enter image description here

+0

どうShedulersData [0] .Key'と '' ShedulersDataについて[0] .Value' –

+0

? –

+0

@MohitShrivastavaこれ以外にキープロパティはありませんが、GetType()のメソッドしか持っていないので、簡単に取得できます。 –

答えて

1

この

ような背後にあるコードの中でクラスを作成します。
public class SchedulerTuple 
{ 
    public string ShedularName { get; set; } 
    public string InterVal { get; set; } 
    public string TimeSeries { get; set; } 
    public string LockingPeriod { get; set; } 
    public string TradeDuration { get; set; } 
    public string Min { get; set; } 
    public string Max { get; set; } 
    public string Touch { get; set; } 
    public string NoTouch { get; set; } 
    public string IPG { get; set; } 
    public string IPGDeduction { get; set; } 
    public string Closeable { get; set; } 
    public string txtTimeSeries { get; set; } 
    public string txtGap { get; set; } 
    public string txtRollingInterval { get; set; } 
} 

、その後、あなたの後ろに、スケジューラ・カウントのようなあなたのコードに他の値を渡したい場合は、代わりに多くのことを梱包の別の引数を追加し、この

[WebMethod] 
public static string SaveShedulers(List<SchedulerTuple> ShedulersData) 
{ 
    // your code here 
} 

のようなリストにあなたのWebMethod属性のPARAMATERSを変更1つのオブジェクトに複数のものが含まれています。

私はここで反射を使う必要はないと思います。私はそれが助けて欲しい

+0

素敵な回答@Danishあなたは私の一日を保存しています。ありがとうAlot buddy ..... :) –

0

@Danishのアイデアに加えて、このようなajaxの呼び出しを変更します。あなたは、クライアント側でShedulersData内のデータを埋める方法を

$.ajax({ 
         type: "POST", 
         url: "BinarySetting.aspx/SaveShedulers", 
         data: ShedulersData, //<------------- 
         contentType: 'application/json; charset=utf-8', 
         success: function (XMLHttpRequest, textStatus, errorThrown) { 
          alert('Success'); 
         }, 
         error: function (result) { 
          alert('error'); 
         } 
        }); 
関連する問題