我試圖從我的數據庫中獲取事件,但我無法讓它工作。該事件不顯示在我的日曆,在我的Web控制檯,我得到:完整日曆GetEvents()方法調用不工作
無法加載資源:服務器500(內部服務器錯誤)的狀態
拋出異常回應:
參數字典包含'ForecastCalendar.Controllers'中方法'System.Web.Mvc.JsonResult GetEvents(Double,Double)'的非空類型'System.Double'的參數'start'的空項。 HomeController的」。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。 參數名:參數
這裏是我的控制,我用它來獲取事件的方法:
public JsonResult GetEvents(double start, double end)
{
var events = new List<Event>();
var dtstart = ConvertFromUnixTimestamp(start);
var dtend = ConvertFromUnixTimestamp(end);
DateTime currStart;
DateTime currEnd;
foreach (Event ev in db.Events)
{
currStart = Convert.ToDateTime(ev.StartDate);
currEnd = Convert.ToDateTime(ev.EndDate);
events.Add(new Event()
{
ID = ev.ID,
Title = ev.Title,
StartDate = currStart,
EndDate = currEnd,
AllDay = true,
EventType = ev.EventType,
Hours = ev.Hours
});
}
var rows = events.ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);
}
private static DateTime ConvertFromUnixTimestamp(double timestamp)
{
var origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
return origin.AddSeconds(timestamp);
}
下面是我的事件模型:
using System;
using System.ComponentModel.DataAnnotations;
namespace ForecastCalendar.Models
{
public enum EventType
{
BAU,
Project,
AnnualLeave
}
public class Event
{
public int ID { get; set; }
[Required]
[DataType(DataType.Date, ErrorMessage = "Please enter a valid date.")]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Start Date")]
public DateTime StartDate { get; set; }
[Required]
[DataType(DataType.Date, ErrorMessage = "Please enter a valid date.")]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "End Date")]
public DateTime EndDate { get; set; }
[Required]
[StringLength(50, ErrorMessage = "Title cannot be longer than 50 characters.")]
[RegularExpression(@"^[a-zA-Z- ]+$", ErrorMessage = "Invalid characters used. A-Z or a-z, '-' and ' ' allowed.")]
[Display(Name = "Title")]
public string Title { get; set; }
[Required]
[EnumDataType(typeof(EventType), ErrorMessage = "Submitted value is not valid.")]
[Display(Name = "Type")]
public EventType? EventType { get; set; }
[Required]
public double Hours { get; set; }
[Required]
public Boolean AllDay { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
public virtual Person Person { get; set; }
}
}
這裏是JavaScript,其中日曆已呈現。
@{
ViewBag.Title = "Home Page";
}
@Styles.Render("~/Content/fullcalendar")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/fullcalendar")
<br />
<div class="container">
<div id="calendar"></div>
</div>
<br />
<script type="text/javascript">
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'title',
center: '',
right: 'prev,next today' },
defaultView: 'month',
weekends: false,
editable: false,
events: "/Home/GetEvents/"
});
});
</script>
任何幫助,非常感謝。
編輯:
我已經改變了我GetEvents()方法,以符合全日曆事件類型。
public JsonResult GetEvents(double start, double end)
{
var fromDate = ConvertFromUnixTimestamp(start);
var toDate = ConvertFromUnixTimestamp(end);
var rslt = db.Events;
List<Event> result = new List<Event>();
foreach (var item in rslt)
{
Event ev = new Event();
ev.ID = item.ID;
ev.Title = item.Title;
ev.Hours = item.Hours;
ev.StartDate = item.StartDate;
ev.EndDate = item.EndDate;
ev.EventType = item.EventType;
ev.AllDay = ev.AllDay;
}
var resultList = result;
var eventList = from e in resultList
select new
{
id = e.ID,
title = e.Title,
start = e.StartDate,
end = e.EndDate,
allDay = e.AllDay
};
var rows = eventList.ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);
}
那麼拋出什麼異常呢? Http 500響應意味着服務器出現問題。 –
請提供完整的錯誤信息(它附帶有錯誤回調),因爲錯誤500通常意味着服務器端的東西被壓壞。 – DonCziken
我已將例外添加到我的OP中。 – James