嗨,我在动作中创建Json数据,如下所示:
public JsonResult InvoiceLineGridData(string sidx, string sord, int page, int rows, int id)
{
....
var jsonData = new {
total = totalPages,
page,
records = totalRecords,
rows = invoiceLines.Select(............)
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
在调用此方法的方法中,我想从此数据中获取记录数。
这可能是一个问题,因为它是一个匿名类型吗?
我走了:
var result = controller.InvoiceLineGridData(null, "desc", 1, 10, 7);
result.Data
但我似乎无法获得记录总数。有谁知道怎么做?
答案 0 :(得分:1)
是的,这是因为数据只是object
。如果您在与控制器相同的程序集中执行此操作,则可以创建dynamic
并从中获取数据。但是,如果您真的希望以这种方式使用数据,最好的办法是创建一个真实的(非匿名)类型,您可以在测试方法中投射Data
。
var jsonData = new InvoiceLineData {
Total = totalPages,
Page,
Records = totalRecords,
Rows = invoiceLines.Select(............)
};
var resultData = (InvoiceLineData)result.Data;
// or
dynamic resultData = result.Data;
Assert.AreEqual(10, resultData.Records);
当我更多地看到这一点时,看起来您的数据可能遵循某种通用网格控件所期望的特定模式。您最好在GridData
类中将其正式化并使用它。