【问题标题】:jqgrid with asp.net mvcjqgrid 与 asp.net mvc
【发布时间】:2012-06-27 12:40:20
【问题描述】:

我在我的 mvc 代码中使用 JQGrid。

我的控制器是

//
        // GET: /Leave/

        public ActionResult CompOff()
        {
            var compoffs = db.RegisterCompOffs.Where(l => l.Employee.Id == this.EmployeeId).ToList();
            return Json(compoffs, JsonRequestBehavior.AllowGet);

        }</code>

compoffs 在这里不为空.. 我的观点是

@model AGS.Hrms.Models.RegisterCompOff

@{
    ViewBag.Title = "CompOff";
}

在请求此视图时,我在 Firebug 的控制台窗口中收到此 500 Internal server error。有人可以告诉我我在这里做错了什么吗?

【问题讨论】:

  • 任何异常消息,堆栈跟踪..等?
  • NetworkError: 500 Internal Server Error - localhost:10659/Leave/CompOff",就是这样......它在萤火虫的控制台窗口中,不会提供更多信息,我的应用程序正在使用我的 localhost:10659/Leave/CompOff 和 html纯文本共享文件

标签: jquery asp.net-mvc jqgrid


【解决方案1】:

想到的两种可能性:

  1. 以下行var compoffs = db.RegisterCompOffs.Where(l =&gt; l.Employee.Id == this.EmployeeId).ToList(); 引发异常。要查看是否是这种情况,只需在控制器操作中放置一个断点。要修复此错误,您必须分析异常及其原因。
  2. 查询返回的compoffs对象包含循环引用,无法进行JSON序列化。要查看是否是这种情况,请在 FireBug 控制台中探索 AJAX 请求的响应,并查找从服务器发送的响应中包含的确切错误消息。它将类似于以下内容:无法序列化 blablah,因为它包含循环引用。要修复此错误,您必须使用视图模型并仅将其实际需要的内容传递给视图,而不是传递整个域对象图。

您的代码的另一个问题是以下行:

url: this.href,

document.ready 处理程序中没有 this.href,所以我猜 AJAX 请求甚至没有到达控制器。确保您已为应该返回 JSON 的控制器操作指定正确的 url:

url: '@Url.Action("CompOff")',

【讨论】:

  • 你修复了 url => url: '@Url.Action("CompOff")', 而不是 url: this.href,
  • 不走运..在你的第二个解决方案中,我正在使用我在 compoffs 中传递的所有内容
  • 控制器动作被调用了吗?发生什么了?你有错误吗?您在 FireBug 的响应中看到了什么?
  • 返回时调用的操作..它会生成此异常
  • 在序列化“AGS.Hrms.Models.Competency”类型的对象时检测到循环引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
相关资源
最近更新 更多