代码之家  ›  专栏  ›  技术社区  ›  Guruprasad J Rao

为什么web.config中的全球化使fullcalendar无法呈现事件

  •  1
  • Guruprasad J Rao  · 技术社区  · 10 年前

    我看到的这个问题在mozilla中,但在IE中效果很好

    我在document.ready的_calendar.cshtml部分视图中有这个

    $.ajax({
            type: "POST",
            contentType: "application/json",
            data: "{}",
            url: "/Home/GetEvents",
            dataType: "json",
            success: function (data) {
                $('#calendar').fullCalendar({
                    editable: false,
                    eventColor: '#F09A18',
                    textColor: 'white',
                    lang: 'en-IN',
                    eventLimit: 1,
                    eventLimitText: 'More',
                    weekMode: 'liquid',
                    events: $.map(data, function (item, i) {
                        var event = new Object();
                        event.start = new Date(item.StartDate);
                        event.title = item.EventName;
                        event.brief = item.EventBrief;
                        return event;
                    }),
    
                });
    
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#cal_error").text(errorThrown);
            }
        });
    

    如果我没有在web.config文件中包含以下代码,它将呈现事件

    <globalization culture="en-IN" uiCulture="en-IN"/>
    

    我也尝试过保持

    <globalization culture="auto" uiCulture="auto"/>
    

    但没有改变。 当我在web.config中包含全球化时,事件在Firefox中根本不会显示,但在IE中仍然可以正常工作。

    以下是我在fullcalendar.js中的默认设置

    titleRangeSeparator: ' \u2014 ', // emphasized dash
        monthYearFormat: 'MMMM YYYY', // required for en. other languages rely on datepicker computable option
    
        defaultTimedEventDuration: '02:00:00',
        defaultAllDayEventDuration: { days: 1 },
        forceEventDuration: false,
        nextDayThreshold: '09:00:00', // 9am
    
        // display
        defaultView: 'month',
        aspectRatio: 1.35,
        header: {
            left: 'title',
            center: '',
            right: 'today prev,next'
        },
        weekends: true,
        weekNumbers: false,
    
        weekNumberTitle: 'W',
        weekNumberCalculation: 'local',
    
        //editable: false,
    
        // event ajax
        lazyFetching: true,
        startParam: 'start',
        endParam: 'end',
        timezoneParam: 'timezone',
    
        timezone: 'local',
    
        //allDayDefault: undefined,
    
        // locale
        isRTL: false,
        defaultButtonText: {
            prev: "prev",
            next: "next",
            prevYear: "prev year",
            nextYear: "next year",
            today: 'today',
            month: 'month',
            week: 'week',
            day: 'day'
        },
    
        buttonIcons: {
            prev: 'left-single-arrow',
            next: 'right-single-arrow',
            prevYear: 'left-double-arrow',
            nextYear: 'right-double-arrow'
        },
    
        // jquery-ui theming
        theme: false,
        themeButtonIcons: {
            prev: 'circle-triangle-w',
            next: 'circle-triangle-e',
            prevYear: 'seek-prev',
            nextYear: 'seek-next'
        },
    
        dragOpacity: .75,
        dragRevertDuration: 500,
        dragScroll: true,
    
        //selectable: false,
        unselectAuto: true,
    
        dropAccept: '*',
    
        eventLimit: false,
        eventLimitText: 'more',
        eventLimitClick: 'popover',
        dayPopoverFormat: 'LL',
    
        handleWindowResize: true,
        windowResizeDelay: 200 // milliseconds before an updateSize happens
    

    当我包含全球化标签时,完整日历会发生什么。我还尝试将时区设置为 “本地” , 'UTC' , 假的 在默认情况下,但即使这样也不起作用?有人能帮我解决这个问题吗?

    1 回复  |  直到 10 年前
        1
  •  0
  •   Guruprasad J Rao    10 年前

    好的。在谷歌搜索了这么多之后,我找到了答案。

    我只需要为活动设置如下日期:

     events: $.map(data, function (item, i) {
                        var event = new Object();
                        event.start = moment(item.StartDate).utc();
                        event.title = item.EventName;
                        event.brief = item.EventBrief;
                        return event;
                    }),
    

    这简直是奇迹。但我必须将web.config文件保存如下

    <globalization culture="auto" uiCulture="auto"/>
    

    而不是 <globalization culture="en-IN" uiCulture="en-IN"/>

    当我把它当作 culture=“en-IN” 即使我使用moment转换日期对象,它也不会起作用。仍在弄清楚原因,但暂时上述解决方案奏效了。