Tôi có một WebMethod trông như thế này được sử dụng để cư trú một jqGridLàm thế nào để làm cho WebMethods serialize ExpandoObject
[System.Web.Script.Services.ScriptService]
public class MyWebService: System.Web.Services.WebService
{
[WebMethod]
[Authorize(Roles = "Admin")]
public object GetPeople(bool _search, double nd, int rows, int page, string sidx, string sord)
{
var tbl = new DynamicModel("ConnStr", tableName: "Person", primaryKeyField: "ID");
var results = tbl.Paged(orderBy: sidx + " " + sord, currentPage: page, pageSize: rows);
return results;
}
}
"Kết quả" là một System.Dynamic.ExpandoObject với các thuộc tính Items, TotalPages, TotalRecords
các json tôi nhận được trở lại trên từ webservice trông như thế này
{
"d": [{
"Key": "TotalRecords",
"Value": 1
}, {
"Key": "TotalPages",
"Value": 1
}, {
"Key": "Items",
"Value": [
[{
"Key": "Row",
"Value": 1
}, {
"Key": "ID",
"Value": 1
}, {
"Key": "Name",
"Value": "Test Template"
}]
]
}]
}
} // Don't know why firebug put this extra bracket
Lý tưởng nhất là tôi muốn nó trở lại mà không cần tất cả các công việc kinh doanh chính và giá trị vì nó bloats ra json không cần thiết và không chơi độc đáo với jqGrid.
Có cách nào thay đổi cách ASP.NET xử lý tuần tự hóa ExpandoObject không?
Một người bạn đã đề xuất phương pháp này http://stackoverflow.com/questions/5156664/how-to-flatten-an-expandoobject-returned-via-jsonresult-in-asp -net-mvc nhưng tôi không biết cách đăng ký JavaScriptConverter với JavaScriptSerializer mà chúng tôi bmethod sử dụng. –
Chết tiệt, câu trả lời tôi tìm kiếm ở đây http://msdn.microsoft.com/en-us/library/bb763183.aspx về một nửa chiều xuống –
Điều cần biết là bạn đã học được điều gì đó mới :) – Jull