我在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
有没有人有解决方案?
答案 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动词