2017-12-03 16 views
0

私は、コントローラからビューのデータセットをフェッチしようとしています。コントローラからビューへのintのリストを取得する

Index.cshtml

<input type="button" value="submit" class="btn btn-default" id="btnGet" name="btnGet" onclick="displayCalendar()" /> 

ボタンを押すと、displayCalendar()機能は、コントローラからすべてのイベントを移入jQueryのfullCalendarを呼び出します。

問題は、私はAJAX呼び出しで、または別々に取り出したい整数のセットを持っていることです。

コントローラー:

return Json(totalList, JsonRequestBehavior.AllowGet); 

今、私が試してみましたでしょうか? ViewBag、ViewData、TempDataを使ってみました。このような;

 TempData["countWeekDays"] = countWeekDays; 
     TempData["countPresents"] = countPresents; 
     TempData["countAbsence"] = countAbsence; 
     TempData["countLates"] = countLates; 
     TempData["countFines"] = countFines; 

これらを同じIndex.cshtmlに表示しても機能しませんでした。私はその後、整数のリストを作成し、jsonのように渡されたオブジェクトのリストと一緒にそのリストをバインドしようとしました。私は上記の方法を試したとき

 List<int> statsView = new List<int>(); 
     statsView.Add(countWeekDays); 
     statsView.Add(countPresents); 
     statsView.Add(countAbsence); 
     statsView.Add(countLates); 
     statsView.Add(countFines); 

    IEnumerable<object> completeObjects = totalList.Cast<object>().Concat(statsView.Cast<object>()); 


    return Json(completeObjects, JsonRequestBehavior.AllowGet); 

は、私は、ブラウザでコンソールデバッグ中リストを見ることができましたが、問題は、それは、カレンダーを移入doesntのことです。リストstatsViewを除外すると、カレンダーにイベントが正しく入力されます。

displayCalendar()の関数が呼び出されたときに、それはコントローラからリストを取り出して単純にビューに表示しますか?

更新日:

<div id='calendar'></div> 
@section scripts{ 
    <script> 
     function h() { 
      id = $('#EmpId').val(); 

      s = $("#startDate").val(); 
      e = $("#endDate").val(); 


       $.post("/Controller/method", 
        { 
         ENum: id, 
         StartDate: s, 
         EndDate: e 
        }, 
        function (response) { 
         callCalendar(response); 
        } 
       ); 
     } 
     function displayCalendar(e) 
     { 

      $("#calendar").fullCalendar('removeEvents'); 
      $("#calendar").fullCalendar('addEventSource', e); 
      $("#calendar").fullCalendar('rerenderEvents'); 

      $('#calendar').fullCalendar({ 
       header: { 
        left: 'prev,next today', 
        center: 'title', 
        right: 'month,agendaDay' 
       }, 
    } 
      }); 
      //stats here 
     } 
    </script> 
    <script> 
     $(document).ready(function() { 
      displayCalendar(''); 
     }); 
    </script> 
} 
+0

StatusListへのidが設定されたdiv要素を持っていると仮定すると? displayCalendarメソッドのコードは何ですか? –

+0

どのようにajax成功/完了イベント内のデータを使用していますか? – Shyju

+0

なぜJasonが帰ってきたのですか?部分的なビューを返します。 – alikuli

答えて

1

あなたの現在のコードが正しくカレンダーを埋めるために、あなたはいくつかの追加データ(整数のリスト)を送信する場合、あなたは2つのプロパティを持つ新しいAnnonymousのオブジェクトを返すことが動作している場合は、 1つは元のデータ用、もう1つは追加データ用です。

List<int> statsView = new List<int>(); 
statsView.Add(countWeekDays); 
statsView.Add(countPresents); 
statsView.Add(countAbsence); 
statsView.Add(countLates); 
statsView.Add(countFines); 

return Json(new { list = totalList, statusList = statsView }, 
                JsonRequestBehavior.AllowGet); 

は今、あなたはあなたのcallCalendarメソッド呼び出しのレスポンスオブジェクトのlistプロパティを使用するクライアント側のコードを更新してください。 statusViewコレクションを取得するには、応答オブジェクトのstatusListプロパティを使用します。

var d = { ENum: id, StartDate: s, EndDate: e }; 
$.post("/Controller/method",d ,function (response) { 
     console.log(response.statusList); 
     callCalendar(response.list); 
}); 

ページにresponse.statusList内の項目を表示したい場合は

、あなたはそれらをループとは、既存のDOM要素にそれを追加することもできます。配列の反復処理には $.eachを使用できます。

$.post("/Controller/method",d ,function (response) { 
     console.log(response.statusList); 

     var items=""; 
     $.each(response.statusList,function(a,b){ 
      items+='<p>'+b+'</p>'; 
     }); 
     $("#StatusList").html(items); 

     callCalendar(response.list); 
}); 

カレンダーに整数のリストを表示するコードを共有することができ、あなたのページに

<div id="StatusList"></div> 
+0

同じ問題ですが、私はintリストを取得しますが、カレンダーにはこれが設定されません.Jsonの戻り値を変更しても、それは正しく挿入されますが、リストを取得できません。画像> https://ibb.co/kb3aVG PS。 intのリストはカレンダーとは関係がありません。私はテーブルの中に単純な形式を表示したいだけです。 –

+0

'response.list'はあなたの古いコードから返された配列と同じ配列になります。あなたの古いコードがうまくいけば、 'response.list'を使う限り、これはうまくいくはずです。 2つの出力を比較し、欠落しているものを見てください。 – Shyju

+0

また、 'JsonRequestBehavior.AllowGet'は匿名オブジェクトの一部ではなく、2番目のパラメータでなければなりません(私は前にブラケットを覚えていませんでした)。 – Shyju

関連する問題