Telerik网格:AJAX的内部服务器错误

Telerik网格:AJAX的内部服务器错误,ajax,asp.net-mvc,razor,telerik,telerik-grid,Ajax,Asp.net Mvc,Razor,Telerik,Telerik Grid,弹出窗口中的整个错误:“错误!请求的URL返回500-内部服务器错误” 编辑 这部分是固定的,我将TempData移动到index函数,并在那里添加了参数。但是,这也破坏了我的排序功能(.Sortable(sorting=>sorting.SortMode(GridSortMode.SingleColumn)) 结束编辑 我不知道为什么会发生这个错误,而且已经花了太多的时间在上面了,所以首先我将发布代码,希望有人能提供帮助 控制器: [GridAction(EnableCustomBinding

弹出窗口中的整个错误:“错误!请求的URL返回500-内部服务器错误”

编辑 这部分是固定的,我将TempData移动到index函数,并在那里添加了参数。但是,这也破坏了我的排序功能(.Sortable(sorting=>sorting.SortMode(GridSortMode.SingleColumn)) 结束编辑

我不知道为什么会发生这个错误,而且已经花了太多的时间在上面了,所以首先我将发布代码,希望有人能提供帮助

控制器:

[GridAction(EnableCustomBinding = true)]
public ActionResult GetTimetables(int moduleId, ModuleType moduleType)
{
    TempData["ModuleId"] = moduleId;
    IList<TimetableViewModel> timetableViewModels =
    //TODO: Don't hardcode this
    _timetableService.GetTimetableEntriesAssociatedWithModule(moduleId, moduleType);

    return View(new GridModel
    {
        Data = timetableViewModels,
    });
}
public class TimetableViewModel : BaseViewModel
{
    public int Id { get; set; }
    public string Date { get; set; }
    public string SessionTimePeriod { get; set; }
    public string RoomName { get; set; }
    public int NumberOfResources { get; set; }
    public string Notes { get; set; }
}
}

查看(太长,无法粘贴所有内容,不需要)


有几件事情看起来可能是导致错误的原因。首先,Data语句末尾有一个逗号

return View(new GridModel
{
    Data = timetableViewModels,
});
应该是

return View(new GridModel
{
    Data = timetableViewModels
});
@(Html.Telerik().Grid<TimetableViewModel>()
       .Name("TimetableGrid")
如果你愿意,你也可以这样做

return View(new GridModel(timetableViewModels);
其次,我认为,在视图中,您需要告诉网格Ajax数据绑定的数据类型

@(Html.Telerik().Grid(Model)
       .Name("TimetableGrid")
应该是

return View(new GridModel
{
    Data = timetableViewModels
});
@(Html.Telerik().Grid<TimetableViewModel>()
       .Name("TimetableGrid")
@(Html.Telerik().Grid())
.Name(“TimetableGrid”)

此外,如果可以,您可能希望尝试在控制器中放置断点,以查看数据是否正确加载到timetableViewModels变量中。

我也遇到类似问题,Fiddler让我得出结论 问题在于您的数据绑定语句:databinding.Ajax().Select(…)

问题在于延迟的LINQ执行。 此解决方案在LINQ查询末尾添加了ToList,帮助我:

如果您可以使用Fiddler或开发人员工具来检查调用
GetTimetables
的主体,看看异常是指什么,这会很有帮助。firebug告诉您什么(回答后)?感谢使用firebug的建议,下面是它的说明(我应该能够处理这个问题,我现在就开始,但是如果你马上想到什么,请发布:):在控制器';管理';System.ArgumentException上调用操作';GetTimetables';时发生以下错误:参数字典包含不可空类型的参数';moduleId';System.Int32';对于方法';System.Web.Mvc.ActionResult GetTimetables的空项(Int32,InfoMentor.IM2.Domain.Model.ModuleType)和#39I通过将TempData移动到index函数并在其中添加参数来修复此问题。但是,这也破坏了我的排序功能(.Sortable(sorting=>sorting.SortMode(GridSortMode.SingleColumn))数据现在正确地输入了,但是排序被破坏了,虽然没有错误(200 OK)。