我有一个看起来像这样的 WebMethod,用于填充 jqGrid
[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;
}
}
"results" 是一个 System.Dynamic.ExpandoObject,具有 Items、TotalPages、TotalRecords 属性
我从 web 服务返回的 json 看起来像这样
{
"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
理想情况下,我希望它在没有所有 Key 和 Value 业务的情况下返回,因为它不必要地膨胀了 json 并且不能很好地与 jqGrid 配合使用。
有没有办法改变 ASP.NET 处理 ExpandoObject 序列化的方式?