int 型の JSON 配列から 2 番目の変数を渡そうとしています。SP_NAMEこれまでのところ、 (文字列である) 変数を渡すことしかできませんでしたがSP_ID、jQuery が情報を配置する場所を認識できるように、コントローラーからも渡す必要があります。
以下はコントローラーのコードです。問題が発生していると思われる行が 2 行あり、<------ 矢印を追加して皆さんにお見せしました。
[Authorize]
public virtual ActionResult getAjaxSPs(string MP = null)
{
    if (MP != null)
    {
        var SPList = from x in sp_index select x;
        var MPData = from y in mp_index
                     where y.MP_NAME == MP
                     select y;
        SPList = SPList.Where(x => x.MP_ID == MPData.FirstOrDefault().MP_ID);
        var SPRow = SPList.Select(x => new { x.SP_NAME, x.SP_ID }).Distinct().ToArray();  // <------- SPRow returns two variable SP_NAME and SP_ID (ex. Program1, 30) 
        float[] SPContent = new float[12];
        Dictionary<string, float[]> SPMonthRow = new Dictionary<string, float[]>();
        foreach (var item in SPRow)
        {
            SPContent = new float[12];
            var SPMonthList = from x in Full_Year_Numbers
                              where x.PROJECT_NAME == item.SP_NAME
                              group x by new { x.ACCOUNTING_PERIOD, x.PROJECT_NAME, x.AMOUNT } into spgroup
                              select new { accounting_period = spgroup.Key.ACCOUNTING_PERIOD, amount = spgroup.Sum(x => x.AMOUNT) };
            foreach (var mulan in SPMonthList)
            {
                int acounting_period = int.Parse(mulan.accounting_period) - 1;
                SPContent[acounting_period] = (float)mulan.amount / 1000000;
            }
            SPMonthRow[item.SP_NAME] = SPContent;
        }
        return Json(SPMonthRow, JsonRequestBehavior.AllowGet); //<--------- This is where I need to return two variables so I can use them both in the Jquery
    }
    return View();
}
したがって、このSPRow行では、必要なキーと値 (program1, 30) を取得しています。SP_IDこのように jQuery で使用できるように、JSON リターンで にアクセスする必要があります。
<div class = "sp-label" title = "' + SP + '" sub_program_id="' + SP.SP_ID + '" onclick="sp_click(this)">' + SP + '</div>'
このように追加item.SP_IDするだけでよいと思いましたSPMonthRow
SPMonthRow[item.SP_NAME, item.SP_ID] = SPContent;
しかし、もう一度ビルドしようとすると、このエラーが発生しました
no overload for method 'this' takes 2 arguments
このエラーにより、私は辞書を間違って定義したと思い込んでいます。これを考えるのは正しいですか、それとも軌道に乗っていませんか? SP_IDjQueryで使用されているJSON配列に取得する別の方法はありますか? SP_ID  そのコントローラーから抜け出すためのあらゆる提案を正直に受け入れます。私のような問題を修正する方法がわかりません。ご協力いただきありがとうございます。問題の診断に役立つその他のコードや情報が必要な場合はお知らせください。
更新 1
foreach (var item in SPRow)
                {
                    SPContent = new float[12];
                    var SPMonthList = from x in act.WPD_Full_Year_Actuals
                                      where x.PROJECT_NAME == item.SP_NAME
                                      group x by new { x.ACCOUNTING_PERIOD, x.PROJECT_NAME, x.AMOUNT } into spgroup
                                      select new { accounting_period = spgroup.Key.ACCOUNTING_PERIOD, amount = spgroup.Sum(x => x.AMOUNT) };
                    foreach (var mulan in SPMonthList)
                    {
                        int accounting_period = int.Parse(mulan.accounting_period) - 1;
                        SPContent[accounting_period] = (float)mulan.amount / 1000000;
                    }
                    dynamic result = new
                        {
                            Name = item.SP_NAME,
                            Id = item.SP_ID
                        };
                    SPMonthRow[result] = SPContent;
                }
                return Json(SPMonthRow, JsonRequestBehavior.AllowGet);
            }
            return View();
        }
更新 2
この関数で使用されるテーブルのスキーマは次のとおりです
public partial class sp_catalog
    {
        public int SP_ID { get; set; } //primary key
        public Nullable<int> MP_ID { get; set; }
        public Nullable<int> IA_ID { get; set; }
        public string SP_NAME { get; set; }
    }
public partial class mp_catalog
    {
        public int MP_ID { get; set; } //primary key
        public Nullable<int> IA_ID { get; set; }
        public string MP_NAME { get; set; }
    }
public partial class Full_Year_Actuals
{
public string ACCOUNTING_PERIOD { get; set; }
public Nullable<decimal> AMOUNT { get; set; }
public string PROJECT_NAME { get; set; }
public int ID_actuals { get; set; }
}
アップデート 3
動的結果クラスを使用してみましたが、GameScripting から提供されたコードを使用できないため、うまくいきません。使用できない理由は、SQL DB を使用してデータを提供する必要があるためです。データは常に変化しているため、データをハードコーディングすることはできません。
私が望むのは、JSON を介してSP_NAMEとSP_ID金額を返せるようにすることだけです。SPContentこの理由は、私の jQuerySP_NAMEで、サブプログラムの名前 (例"subProgram1") を出力するために使用するためです。SP_IDサブプログラムを配置するプログラムをjQueryに知らせるために使用します(たとえばSP_ID = 1、サブプログラムがprogram1の下にある場合)。に含まれる金額は、ループSPContentに入力される月間合計です。foreach
(program1                 Jan  Feb  Mar
  subProgram1 $100 $200 $300 etc...)`
これが意味することは、別の方法で金額データSPMonthRow[item.SP_NAME] = SPContent;を出力できない限り、この行を失うことはないということです。SPContentjQueryが必要なものを表示できるように、JSONの関数からデータが流れ続けることができる限り、私はすべてのソリューションにオープンです。エッセイで申し訳ありませんが、私を助けたい人がそうするために必要な情報を持っていることを確認したいだけです. 質問のステータスを頻繁にチェックするので、質問やコードのリクエストをお気軽にどうぞ。ご協力ありがとうございました!