Я искал stackoverflow по этой теме и пробовал решения, но у меня это не сработало.Даже если я перезагрузлю всю страницу, ни одно из добавленных событий не появится в календаре, пока я не убью программу и не перезапущу ее.Я знаю, что это происходит через код, потому что я достиг точек останова как в строках refetchEvents, так и в rerenderEvents.
Ниже приведен javascript:
$(document).ready(function () {
var TheCalendar = $('#ODCalendar').fullCalendar({
header:
{
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
buttonText: {
today: 'today',
month: 'month',
week: 'week',
day: 'day'
},
events: function (start, end, timezone, callback) {
$.ajax({
url: '/Home/GetCalendarData',
type: "GET",
dataType: "JSON",
success: function (result) {
var events = [];
$.each(result, function (i, data) {
var bColor = "#000000";
var tColor = "#FFFFFF";
switch (data.ReleaseType) {
case '1':
if (data.Action == '1') {
bColor = '#cc9900';
}
else if (data.Action == '2') {
bColor = '#ffd24d';
tColor = "#000000";
}
else {
bColor = '#e6e6e6';
}
break;
case '2':
if (data.Action == '1') {
bColor = '#ff8080';
}
else if (data.Action == '2') {
bColor = '#ffcccc';
tColor = "#000000";
}
else {
bColor = '#e6e6e6';
}
break;
case '3':
if (data.Action == '1') {
bColor = '#0099ff';
}
else if (data.Action == '2') {
bColor = '#ccebff';
tColor = "#000000";
}
else {
bColor = '#e6e6e6';
}
break;
case '4':
if (data.Action == '1') {
bColor = '#2fb62f';
}
else if (data.Action == '2') {
bColor = '#d6f5d6';
tColor = "#000000";
}
else {
bColor = '#e6e6e6';
}
break;
case '99':
bColor = '#cccccc';
break;
default:
bColor = '#999999';
}
events.push(
{
title: data.Title,
description: data.Description,
start: moment(data.Start_Date).format('YYYY-MM-DD HH:mm'),
end: moment(data.End_Date).format('YYYY-MM-DD HH:mm'),
url: '/Home/ShowEditEvent?id=' + data.id + '&Owner=' + data.Owner,
textColor: tColor,
backgroundColor: bColor,
borderColor: "#000066"
});
});
callback(events);
}
});
},
eventRender: function (event, element) {
element.qtip(
{
content: event.description
});
},
editable: true
});
// Refresh each time home page loads
$('#ODCalendar').fullCalendar('refetchEvents');
$('#ODCalendar').fullCalendar('rerenderEvents');
});
Данные создаются в контроллере MVC,Я использую HTML.BeginForm вместо AJAX.BeginForm, потому что это доставляет мне больше хлопот, чем стоит:
public ActionResult AddEvent(Guid CalendarID = new Guid(), string Title = "",
int Owner = 0, string Description = "", string Start_Date = "", string End_Date = "",
string ReleaseType = "", string ReleaseVersion = "", string Action = "", string Network = "", string CRQ = "",
string Comments = "", string StoreList = "", bool SharedEntry = true)
{
CalendarEntry model = new CalendarEntry();
try
{
using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["CalendarConnection"].ToString()))
{
string query = "Insert Into CalendarEntry (id, CalendarID, Title, Owner, Description, Start_Date, End_Date, ReleaseType, ReleaseVersion, Action, Network, CRQ, Comments, StoreList, SharedEntry)" +
" Values(@id, @CalendarID, @Title, @Owner, @Description, @Start_Date, @End_Date, @ReleaseType, @ReleaseVersion, @Action, @Network, @CRQ, @Comments, @StoreList, @SharedEntry)";
SqlCommand command = new SqlCommand(query, connection);
command.Parameters.AddWithValue("id", id);
command.Parameters.AddWithValue("CalendarID", CalendarID);
command.Parameters.AddWithValue("Title", Title);
command.Parameters.AddWithValue("Owner", Owner);
command.Parameters.AddWithValue("Description", Description);
//command.Parameters.AddWithValue("Start_Date", Start_Date);
//command.Parameters.AddWithValue("End_Date", End_Date);
command.Parameters.AddWithValue("Start_Date", Start_DateDT);
command.Parameters.AddWithValue("End_Date", End_DateDT);
command.Parameters.AddWithValue("ReleaseType", ReleaseType);
command.Parameters.AddWithValue("ReleaseVersion", ReleaseVersion);
command.Parameters.AddWithValue("Action", Action);
command.Parameters.AddWithValue("Network", Network);
command.Parameters.AddWithValue("CRQ", CRQ);
command.Parameters.AddWithValue("Comments", Comments);
command.Parameters.AddWithValue("StoreList", StoreList);
command.Parameters.AddWithValue("SharedEntry", SharedEntry);
connection.Open();
command.ExecuteNonQuery();
}
}
catch
{
}
return Redirect("Index");
}
Я возвращаюсь на страницу индекса, где находится календарь, и проходит через код JavaScript- но не перезагружать его.Куда я иду не так, пожалуйста?