JqG​​rid在ASP.NET MVC2中不起作用

时间:2010-04-11 13:39:29

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

我在ASP.NET MVC1中有一个使用VB.NET控制器和JqGrid的项目。它在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

有没有人有解决方案?

3 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:1)

在MVC2中:Dim result = New JsonResult()make默认为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下工作正常,而不修改客户端代码上的任何内容。

答案 2 :(得分:0)

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