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

why globalization in web.config makes fullcalendar not to render events

我看到的这个问题出现在 mozilla 中,但在 IE 中工作正常

我在 _calendar.cshtml document.ready

的部分视图中有这个
$.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

当我包含全球化标签时,fullcalendar 会发生什么。我还尝试将时区设置为 'local''UTC'false在默认情况下,但即使这样也行不通?谁能帮我解决这个问题?

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

我只需要为事件设置如下日期:

 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 转换日期对象也无法正常工作。仍在找出原因,但暂时上述解决方案可行。