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