【问题标题】:JqGrid doesn't work in ASP.NET MVC2JqG​​rid 在 ASP.NET MVC2 中不起作用
【发布时间】:2010-04-11 13:39:28
【问题描述】:

我有一个使用 VB.NET 控制器和 JqGrid 的 ASP.NET MVC1 项目。它在 MVC1 下工作正常。将项目迁移到 ASP.NET MVC2 后,不再填充网格。似乎MVC2中对返回的Jsonresult有一些新的限制。如何在 VB.NET 中解决这个问题。填充 jqgrid 的控制器函数是这样的:

Function GetGridRecordset(ByVal qry As String) As JsonResult
  Dim result = New JsonResult()
  ...
  ...
  Return result
End Function

有人有解决办法吗?

【问题讨论】:

  • 这应该在 MVC2 中工作,虽然我认为返回 Json 的推荐方法是在控制器上使用 Json() 方法 - return Json( ... )。您是否使用 Fiddler 或 Firebug 调试过网络流量,以确保响应是预期的?问题可能出在客户端吗?

标签: asp.net json asp.net-mvc-2 jqgrid


【解决方案1】:

在 Asp.net MVC 2 中 JsonResult 只响应 http Post。

http://www.asp.net/learn/whitepapers/what-is-new-in-aspnet-mvc/#_TOC5

这是一篇关于为什么 Json 不支持 Get 的帖子

http://haacked.com/archive/2009/04/02/anatomy-of-csrf-attack.aspx

【讨论】:

    【解决方案2】:

    在 MVC2 中:Dim result = New JsonResult() 默认为 result.JsonRequestBehavior = JsonRequestBehavior.DenyGet,而在 MVC1 中并非如此。 回应是:

    Function GetGridRecordset(ByVal qry As String) As JsonResult 
      Dim result = New JsonResult()
      ...
      ...
      result.JsonRequestBehavior = JsonRequestBehavior.AllowGet
      Return result    
    End Function
    

    现在,jqGrid 在 MVC2 下可以正常工作,无需修改客户端代码上的任何内容。

    【讨论】:

      【解决方案3】:

      我需要查看更多代码,但这可能是因为 MVC 2 中 JsonResult 的变化吗?您可能需要通过将 JsonRequestBehavior 属性设置为 JsonRequestBehavior.AllowGet 来允许 GET 动词

      【讨论】:

      • 代码在MVC1下完美运行。似乎问题是:除了这个之外,还有另一种方法可以在 VB.Net 中为 JsonRequestBehavior 启用 AllowGet 属性:return Json(data, JsonRequestBehavior.AllowGet)?谢谢!...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多