Asp.net
如何將 JsonResult 對像作為字元串獲取以便我可以修改它?
我正在使用 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()它時,它就可以工作,無需使用StringBuilder.如果您只是希望您的程式碼能夠正常工作,那麼有一個覆蓋
JavaScriptSerializer.Serialize()可以將對象序列化StringBuilder並將結果附加到。這應該正是您正在尋找的。一些相關連結:
你也可以這樣做:
JsonResult json = ... ; JavaScriptSerializer serializer = new JavaScriptSerializer(); string yourJsonResult = serializer.Serialize(json.Data);就這麼簡單:D
編輯:程式碼高亮