Asp.net 完整日历未渲染事件?
事件未在FullCalendar中呈现Asp.net 完整日历未渲染事件?,asp.net,fullcalendar,Asp.net,Fullcalendar,事件未在FullCalendar中呈现 var calendar = $('#calendar').fullCalendar({ theme: true, header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, //events: '/MyCalender/JsonResponse.ashx'
var calendar = $('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
//events: '/MyCalender/JsonResponse.ashx',
events: [{id: '1',title: 'Event1',start: 1312462800,end: 1312462800,allDay:false,description: 'Event1'},{id: '3',title: 'Event2',start: 1309890600,end: 1309890600,allDay:true,description: 'Event2'},{id: '4',title: 'Event5',start: 1311705000,end: 1311705000,allDay:true,description: 'Event5'},{id: '5',title: 'Event3',start: 1310927400,end: 1310927400,allDay:true,description: 'Event3'},{id: '6',title: 'Event4',start: 1310495400,end: 1310495400,allDay:true,description: 'Event4'},{id: '7',title: 'Time Event1',start: 1312144200,end: 1312174800,allDay:false,description: 'Time Event1'}],
..other parameter
...
});
我正在使用以下代码ashx文件调用事件数据
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
DateTime start = new DateTime(1970, 1, 1);
DateTime end = new DateTime(1970, 1, 1);
start = start.AddSeconds(double.Parse(context.Request.QueryString["start"]));
end = end.AddSeconds(double.Parse(context.Request.QueryString["end"]));
String result = String.Empty;
result += "[";
List<int> idList = new List<int>();
foreach (CalendarEvent cevent in EventDAL.getEvents(start, end))
{
result += convertCalendarEventIntoString(cevent);
idList.Add(cevent.id);
}
if (result.EndsWith(","))
{
result = result.Substring(0, result.Length - 1);
}
result += "]";
//store list of event ids in Session, so that it can be accessed in web methods
context.Session["idList"] = idList;
context.Response.Write(result);
}
private String convertCalendarEventIntoString(CalendarEvent cevent)
{
String allDay = "true";
if (ConvertToTimestamp(cevent.start).ToString().Equals(ConvertToTimestamp(cevent.end).ToString()))
{
if (cevent.start.Hour == 0 && cevent.start.Minute == 0 && cevent.start.Second == 0)
{
allDay = "true";
}
else
{
allDay = "false";
}
}
else
{
if (cevent.start.Hour == 0 && cevent.start.Minute == 0 && cevent.start.Second == 0
&& cevent.end.Hour == 0 && cevent.end.Minute == 0 && cevent.end.Second == 0)
{
allDay = "true";
}
else
{
allDay = "false";
}
}
return "{" +
"id: '" + cevent.id + "'," +
"title: '" + HttpContext.Current.Server.HtmlEncode(cevent.title) + "'," +
"start: " + ConvertToTimestamp(cevent.start).ToString() + "," +
"end: " + ConvertToTimestamp(cevent.end).ToString() + "," +
"allDay:" + allDay + "," +
"description: '" + HttpContext.Current.Server.HtmlEncode(cevent.description) + "'" +
"},";
}
public bool IsReusable
{
get
{
return false;
}
}
private long ConvertToTimestamp(DateTime value)
{
long epoch = (value.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
return epoch;
}
经过反复试验,以下是一些观察结果: 名称和值周围的双引号适用于我,例如id:1。代码中的名称没有结束双引号,而值是单引号。尝试使用双引号 开始和结束日期值必须以秒为单位。我对.net不熟悉,所以我无法判断ConvertToTimestamp返回的是秒还是毫秒。此外,该值还应使用双引号
你能试试上面的建议,看看它们是否适合你吗?用下面的代码解决
context.Response.ContentType = "application/json";
DateTime start = new DateTime(1970, 1, 1);
DateTime end = new DateTime(1970, 1, 1);
start = start.AddSeconds(double.Parse(context.Request.QueryString["start"]));
end = end.AddSeconds(double.Parse(context.Request.QueryString["end"]));
List<EventClass> listCalender = EventDAL.getEvents(start, end);
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
context.Response.Write(js.Serialize(listCalender));
Javascript控制台上是否有错误?未找到错误。我已经使用Firebug来纠正任何错误,但根本没有错误。若我直接提供了事件对象,那个么事件的渲染工作正常。但是,每当我调用ashx时,您都会看到javascript中针对事件的注释代码,什么都不会发生。您是否尝试过在浏览器中打开/mycalendar/JsonResponse.ashx,获取响应并将其直接粘贴到事件中?这可能会显示任何语法错误。您还可以在网络选项卡的Firebug中看到事件url的响应。我已经尝试过这个选项,它工作正常。但是如何将服务器端事件调用到FullCalendar中呢?我试过调用page的webmethod、webservice以及http处理程序。有什么需要配置的吗?我试过了,但没有按照上面描述的解决方案工作。