【问题标题】:Telerik grid: Internal server error with AJAXTelerik 网格:AJAX 的内部服务器错误
【发布时间】:2012-06-15 11:39:29
【问题描述】:

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

编辑 这部分已修复,我将 TempData 移动到索引函数并在那里添加了参数。但是,这也破坏了我的排序功能( .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; }
}

}

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

@(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)

【问题讨论】:

  • 如果您可以使用 Fiddler 或开发人员工具检查对 GetTimetables 的调用主体,以了解异常所指的内容,这将有所帮助。
  • 萤火虫告诉你什么(POST Answer)?
  • 感谢您对使用 firebug 的建议,这就是它所说的(我应该能够使用它,我现在就开始,但是如果您有任何想法,请立即发布 :)):在 Controller 'Manage' 上调用 Action 'GetTimetables' 时发生以下错误System.ArgumentException:参数字典包含参数 'moduleId' 的空条目不可为空的类型 'System.Int32'对于方法 'System.Web.Mvc.ActionResult GetTimetables(Int32, InfoMentor.IM2.Domain.Model.Modules.ModuleType)'
  • 我通过将 TempData 移动到索引函数并在那里添加参数来解决此问题。但是,这也破坏了我的排序功能( .Sortable(sorting =>sorting.SortMode(GridSortMode.SingleColumn))

标签: ajax asp.net-mvc razor telerik telerik-grid


【解决方案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 变量中。

【讨论】:

  • 数据现在可以正常输入,但是排序被破坏了,虽然没有错误(200 OK)。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 2020-02-12
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2018-05-23
    相关资源
    最近更新 更多