Asp.net mvc 在MVC.Net中,必须为JsonResult传递什么类型的对象

Asp.net mvc 在MVC.Net中,必须为JsonResult传递什么类型的对象,asp.net-mvc,Asp.net Mvc,因此,我将一个自定义类传递给我的控制器,而JsonResult似乎没有正确传递 困扰我的是(fullcalendar也不会读取json)我视图中的console.log打印函数的路径(wtf?),而不是json应该返回的内容 这是我的代码: public JsonResult GetCalendarEvents() { var eventList = BusinessLayer.Event.getAllEvents(); return Json(

因此,我将一个自定义类传递给我的控制器,而JsonResult似乎没有正确传递

困扰我的是(fullcalendar也不会读取json)我视图中的console.log打印函数的路径(wtf?),而不是json应该返回的内容

这是我的代码:

    public JsonResult GetCalendarEvents()
    {
        var eventList = BusinessLayer.Event.getAllEvents();

        return Json(eventList.ToArray(), JsonRequestBehavior.AllowGet);
    }
要使其工作,必须传递什么类型的对象

我的evenList类型为
List
,如下所示:

    public static String ListToString(List<Event> evs)
    {
        String ret = "";
        foreach (var ev in evs)
        {
            ret += ev.ToString() + "\n";
        }
        return ret;
    }

    public static List<Event> getAllEvents()
    {
        List<DataLayer.Event> dbEvents = DataApi.db.Event.ToList();
        List<Event> returnEvents = new List<Event>();
        foreach (DataLayer.Event oneEvent in dbEvents)
        {
            Event newEvent = new Event
            {
                ID = oneEvent.IDEvent,
                userID = oneEvent.UserID,
                projectID = oneEvent.ProjectID,
                jobtypeID = oneEvent.JobTypeID,
                taskID = oneEvent.TaskID,
                ticketID = oneEvent.TicketID,
                loccoID = oneEvent.LoccoID,
                startTime = oneEvent.StartTime,
                endTime = oneEvent.EndTime,
                shiftFrom = oneEvent.ShiftFrom,
                shiftTo = oneEvent.ShiftTo,
                description = oneEvent.Description,
                billable = oneEvent.Billable
            };
            returnEvents.Add(newEvent);
        }
        return returnEvents;
    }
并将结果输出到控制台:

console.log("@Url.Action("GetCalendarEvents/")");
但我得到:

VM84 Index:83 /Calendar/GetCalendarEvents/

fullcalendar.min.js:6 Uncaught TypeError: Cannot read property 'hasTime' of undefined

看起来您缺少了一些必填字段。如果查看,
标题
开始
必需的。尝试在类中设置这些,并从中开始构建

public static List<Event> getAllEvents()
{
    List<DataLayer.Event> dbEvents = DataApi.db.Event.ToList();
    List<Event> returnEvents = new List<Event>();
    foreach (DataLayer.Event oneEvent in dbEvents)
    {
        Event newEvent = new Event
        {
            start = oneEvent.StartTime,
            title = oneEvent.Description // you may need to add this to your Event class.
        };
        returnEvents.Add(newEvent);
    }
    return returnEvents;
}
公共静态列表getAllEvents()
{
List dbEvents=DataApi.db.Event.ToList();
List returnEvents=new List();
foreach(dbEvents中的DataLayer.Event oneEvent)
{
Event newEvent=新事件
{
start=oneEvent.StartTime,
title=oneEvent.Description//您可能需要将其添加到事件类中。
};
returnEvents.Add(newEvent);
}
返回事件;
}

此外,不要使用控制台来记录Json,而是使用或使用Chrome高级工具

任何可以序列化为Json的工具都可以。返回的JSON到底有什么问题?是空的吗?你有例外吗?什么意思?什么不起作用?您遇到了什么错误?抱歉,我试图解释我的调试尝试。您是否尝试在浏览器中调用
/Calendar/GetCalendarEvents
,将url粘贴到地址栏,或使用Fiddler或Chromre REST工具
@url。Action
“生成操作方法的完全限定url”根据文件,这让我兴奋不已。还有一个问题是,我正在调试@Url.Action,试图将它输出到浏览器控制台,以便它只显示Url。我还没有弄清楚\@Url.Action是在什么级别执行的,但它与这个“特定”问题稍微无关
public static List<Event> getAllEvents()
{
    List<DataLayer.Event> dbEvents = DataApi.db.Event.ToList();
    List<Event> returnEvents = new List<Event>();
    foreach (DataLayer.Event oneEvent in dbEvents)
    {
        Event newEvent = new Event
        {
            start = oneEvent.StartTime,
            title = oneEvent.Description // you may need to add this to your Event class.
        };
        returnEvents.Add(newEvent);
    }
    return returnEvents;
}