我正在使用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()只是为了看看会发生什么,再次发生同样的事情.
有任何想法吗?
解决方法
ASP.NET MVC中的Json()方法只是通过JsonResult类使用
JavaScriptSerializer
类.如果您想使用JSON将objCustomerList对象序列化为字符串,则可以自己使用它.
我的建议是采取略有不同的方法.
>创建一个模型,表示您尝试创建的JavaScript对象的.NET等效项.可能是具有Page,Total,Rows和CustomerList属性的FlexiGridModel对象.
>然后,当您将FlexiGridModel传递给Json()时,它就可以正常工作,无需使用StringBuilder构建JSON字符串.
如果您只想让代码工作,那么有一个override on JavaScriptSerializer.Serialize()
将对象序列化,StringBuilder将结果附加到.这应该是你正在寻找的.
一些相关链接:
> JavaScriptSerializer example
> ASP.NET MVC JsonResult source
> Codeproject: ASP.NET MVC Flexigrid sample