Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 完整日历未渲染事件?_Asp.net_Fullcalendar - Fatal编程技术网

Asp.net 完整日历未渲染事件?

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'

事件未在FullCalendar中呈现

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处理程序。有什么需要配置的吗?我试过了,但没有按照上面描述的解决方案工作。