为什么 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 转换日期对象也无法正常工作。仍在找出原因,但暂时上述解决方案可行。
我看到的这个问题出现在 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 转换日期对象也无法正常工作。仍在找出原因,但暂时上述解决方案可行。