我正在尝试从控制器获取一组数据来查看,我有以下内容;
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);
当我尝试上述方法时,我可以在浏览器中看到控制台调试中的列表,但问题是它不会填充日历。如果我排除列表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 :(得分:1)
如果您当前的代码正在努力正确填充日历,并且您想要发送一些其他数据(整数列表),您可能会返回一个新的匿名对象,其中包含2个属性,一个用于原始数据,第二个用于附加数据
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);
现在确保更新客户端代码以使用响应对象的list
属性进行callCalendar
方法调用。要获取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);
});
假设您在页面中将ID设为StatusList
的div
<div id="StatusList"></div>