Я пытаюсь выяснить код другого. Это MVC 4.0, и вызов этого ActionResult никогда не имеет даты начала или окончания. Никогда. Таким образом, он запускает getCalVm, который, как вы можете grock, создает модель представления, возвращаясь к представлению. Однако на этом пути назад этот JsonResult (ниже ActionResult) захватывает путь выполнения кода и выравнивает возвращенную модель представления, ссылаясь на ту же модель просмотра, но теперь обертывает ее в сегодняшнюю дату + или - 2 месяца.
Каким нечетным является этот Calendar ActionResult, не определяется как сопоставленный маршрут в Global.asax, который вопреки всему, что я читал о маршрутах. Я могу найти определения для маршрутов JsonResult GetEventsByEntity и двух других. См. Определения полного маршрута ниже.
Может ли кто-нибудь сказать мне, есть ли маршрут, определенный для карт /School/Calendar/EntityID, который получит этот URL-адрес www.domain.com/school/calendar/10001 и какой маршрут он будет?
Наконец, порядок выполнения. Почему запускаются маршруты JsonResult после ActionResult? Могу ли я поставить условие теста в JsonResults, который сообщает им, что представление уже построено, и они должны отказаться от выполнения. Что-то вроде использования переменной Session, которая уведомляет об образе JsonResult, у нас есть остановка данных. Каков правильный способ надлежащего принуждения этого выполнения кода. Предыдущий разработчик берет карты на линии безработицы, поэтому я не уверен, что он намеревался с этим беспорядком. Если кто-то с большим прикосновением, чем я могу интерпретировать человека, я все уши.
Наконец, как я могу назвать это действие результатом onclick на стороне клиента? Более конкретно, это будет правильный способ сделать это? Я кормлю взгляд на этот третий календарь и, возможно, там лучший способ. http://fullcalendar.io/ извините за потоп, но я думаю, что этот код сосет, и я не могу понять. Так что либо я прав, и мне нужно это исправить, либо я глуп. Я в порядке, будучи глупым, признавая, что это единственный способ исправить этот недостаток.
Кроме того, если есть способ использовать Ajax и загружать предыдущий и следующий месяц для io-календаря, я хотел бы знать, как это сделать. Я не прошу кого-нибудь написать код, хотя я бы поблагодарил их за это. Но URL-адрес календаря имеет документы. Если кто-то, кто понимает Ajax и javascript лучше, чем я (который примерно у кого-то выше 3 футов), может помочь, подбросить ссылку или что-то, что я куплю пиво в этой жизни или в следующем.
public ActionResult Calendar(int? id, DateTime? startDate, DateTime? endDate)
{
SetSchoolIdCookie(id);
return View(getCalVm(id, startDate, endDate));
}
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public JsonResult GetEventsByEntity(DateTime? startDate, DateTime? endDate)
{
if (!startDate.HasValue) { startDate = DateTime.Today.AddMonths(-2); }
if (!endDate.HasValue) { endDate = DateTime.Today.AddMonths(2); }
return Json(getCalVm(null, startDate.Value, endDate.Value), JsonRequestBehavior.AllowGet);
}
Здесь карты маршрутов:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"GameRoute", // Route name
"Teams/Game/{id}/{entityId}", // URL with parameters
new { controller = "Teams", action = "Game", id = UrlParameter.Optional, entityId = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"TournamentRoute", // Route name
"Teams/Tournament/{id}/{entityId}", // URL with parameters
new { controller = "Teams", action = "Tournament", id = UrlParameter.Optional, entityId = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"SchoolStateSearch", // Route name
"School/StateSearch", // URL with parameters
new { controller = "School", action = "StateSearch" } // Parameter defaults
);
routes.MapRoute(
"SchoolSearch", // Route name
"School/Search", // URL with parameters
new { controller = "School", action = "Search" } // Parameter defaults
);
routes.MapRoute(
"SchoolCalendarJson", // Route name
"School/GetEventsByEntity", // URL with parameters
new { controller = "School", action = "GetEventsByEntity" } // Parameter defaults
);
routes.MapRoute(
"SchoolCalendarJsonSummary", // Route name
"School/GetSummaryEventsByEntity", // URL with parameters
new { controller = "School", action = "GetSummaryEventsByEntity" } // Parameter defaults
);
routes.MapRoute(
"SchoolCalendarJsonDetails", // Route name
"School/GetDetailEventsByEntity", // URL with parameters
new { controller = "School", action = "GetDetailEventsByEntity" } // Parameter defaults
);
routes.MapRoute(
"School", // Route name
"School/{id}", // URL with parameters
new { controller = "School", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "School", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
См. Это для базового понимания контроллеров и маршрутов ASP.NET MVC.
Запрос GET по этому адресу:
www.domain.com/School/Calendar/10001
будет использовать этот маршрут:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "School", action = "Index", id = UrlParameter.Optional }
);
и ударит по этой конечной точке:
public ActionResult Calendar(int? id, DateTime? startDate, DateTime? endDate)
{
SetSchoolIdCookie(id);
return View(getCalVm(id, startDate, endDate));
}
Поскольку FullCalendar является плагином jQuery, я бы использовал $.get.