#asp.net-mvc #json
#asp.net-mvc #json
Вопрос:
Привет, в действии я создаю данные 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
но, похоже, я не могу получить общее количество записей. Кто-нибудь знает, как это сделать?
Комментарии:
1. откуда берется TotalPages?
2. Оно вычисляется в методе
Ответ №1:
Да, это потому, что данные — это просто object
. Если вы делаете это в той же сборке, что и ваш контроллер, вы можете создать a 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
классе и использовать это.