我正在使用FlexiGrid jQuery插件,我需要从我的MVC应用程序中获取一个JSON对象,如果FlexiGrid仅使用该对象,我需要添加一些项目,以便它与FlexiGrid一起正常工作.
所以这是我的控制器代码的一部分:
If Request.QueryString("json") IsNot Nothing Then Dim data As New StringBuilder() data.Append("page: " & pageIndex & "," & vbCrLf) data.Append("total: " & ViewData.TotalCount & "," & vbCrLf) data.Append("rows: ") data.Append(Json(objCustomerList)) Return Content(data.ToString()) End If
不幸的是,在上面的代码中Json(objCustomerList)
返回'System.Web.MVV.JsonResult'而不是所需的JSON字符串数据.我也试着Json(objCustomerList).ToString()
看看会发生什么,再次发生同样的事情.
有任何想法吗?
Json()
ASP.NET MVC中的方法只是通过JavaScriptSerializer
类使用JsonResult
该类.如果您想使用JSON将objCustomerList对象序列化为字符串,则可以自己使用它.
我的建议是采取略有不同的方法.
创建一个模型,表示您尝试创建的JavaScript对象的.NET等效项.可能是具有Page,Total,Rows和CustomerList属性的FlexiGridModel对象.
然后,当您将FlexiGridModel传递给Json()
它时,它就可以正常工作,无需使用构建JSON字符串StringBuilder
.
如果你只是想让你的代码工作,那么有一个覆盖JavaScriptSerializer.Serialize()
,它使对象序列化StringBuilder
并将结果附加到.这应该是你正在寻找的.
一些相关链接:
JavaScriptSerializer示例
ASP.NET MVC JsonResult源码
Codeproject:ASP.NET MVC Flexigrid示例
你也可以这样做:
JsonResult json = ... ; JavaScriptSerializer serializer = new JavaScriptSerializer(); string yourJsonResult = serializer.Serialize(json.Data);
很简单:D
编辑:代码高照明