0

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

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

我不知道为什么会发生此错误并且已经花费了太多时间,所以首先我将发布代码并希望有人能提供帮助。

控制器:

[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; }
}

}

查看(太长,无法全部粘贴,不需要)

@(Html.Telerik().Grid(Model)
           .Name("TimetableGrid")
           .PrefixUrlParameters(false)
           .Columns(columns =>
...
           .DataBinding(dataBinding => dataBinding.Ajax().Select("GetTimetables", "Manage", new { moduleId = TempData["ModuleId"], moduleType = ModuleType.UnitOfLearning }))
         //.Pageable(paging => paging.Total(Model.entryCount).PageSize(25))
           .Sortable(sorting => sorting.SortMode(GridSortMode.SingleColumn)))

@Html.Telerik().ScriptRegistrar().jQuery(false).jQueryValidation(false)
4

2 回答 2

1

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

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

应该

return View(new GridModel
{
    Data = timetableViewModels
});

或者如果你愿意,你可以这样做

return View(new GridModel(timetableViewModels);

其次,我认为,在视图中,您需要告诉网格您的 Ajax 数据绑定的数据类型。

@(Html.Telerik().Grid(Model)
       .Name("TimetableGrid")

应该

@(Html.Telerik().Grid<TimetableViewModel>()
       .Name("TimetableGrid")

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

于 2012-06-15T13:03:50.077 回答
1

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

问题在于延迟的 LINQ 执行。这个解决方案,在 LINQ 查询末尾添加 ToList,帮助了我: asp.net MVC 4 Telerik Grid Ajax issue

于 2014-02-18T08:57:04.663 回答