Я использую AngularJS вместе с KendoUI для создания сетки, которая получает свои данные из веб-сервиса WebAPI. Для сетки я хочу разрешить сортировку на сервере, пейджинг, фильтрацию и группировку. Для этого я пытаюсь использовать библиотеку KendoGridBinderEx.KendoGridBinderEx - Нет свойства или поля в типе
Я загрузил источник KendoGridBinderEx, запустил пример проекта, и он отлично работает. Однако, когда я сделать то же самое в моем проекте, я получаю следующее сообщение об ошибке, когда я пытаюсь сделать фильтр на колонке в сетке:
System.Linq.Dynamic.ParseException: Нет Свойство или поле 'test' существует в типе 'MyEntity'
«test» - это то, что я набираю в фильтр, поэтому это должен быть текст фильтра; он не должен искать свойство или поле под названием «тест».
Я отлаживал и использовал Fiddler, чтобы увидеть, что часть фильтра, отправляемая в запросе, точно такая же, как и рабочий запрос в примерах, поэтому я не думаю, что проблема на стороне запроса ,
Для всех моих кодовых блоков я упрощаю все, чтобы сэкономить место и вырезать ненужные вещи. Например, я вырезаю свой код базы данных и создаю список объектов «на лету», так как при этом все еще возникает проблема, поэтому я знаю, что это не проблема с моим кодом Entity Framework.
Вот мой JS код:
var myDataSource = {
transport: {
read: {
url: function() {
return url;
},
type: 'post',
dataType: 'json'
},
parameterMap: function (options, operation) {
if (options.filter) {
KendoGrid_FixFilter(myDataSource, options.filter);
}
if (operation === "read") {
// convert the parameters to a json object
return kendo.stringify(options);
}
return options;
}
},
serverPaging: true,
serverSorting: true,
serverFiltering: true,
serverGrouping: true
schema: {
data: 'data',
groups: 'groups',
aggregates: 'aggregates',
total: 'total',
model: {
id: "id",
fields: {
id: { type: "number" },
name: { type: "string" },
description: { type: "string" }
}
}
},
};
И вот мой код WebAPI Контроллер:
[System.Web.Http.Route("api/MyEntity")]
[System.Web.Http.HttpPost]
public KendoGridEx<MyEntity, MyEntity> GetMyEntities(KendoGridApiRequest request)
{
var entList = new List<MyEntity>();
for (int i = 0; i < 10; i++)
{
var newEntity = new MyEntity
{
Id = i,
Name = "test",
Description = "description"
};
entList.Add(newEntity);
}
return entList.AsQueryable().ToKendoGridEx<MyEntity, MyEntity>(request);
}
Так что, если я устанавливаю «содержит», фильтр на колонке «Имя» со значением из «теста» я получаю вышеупомянутую ошибку. Есть идеи о том, почему?
Верно, что вся моя точка. Ни в одном из моих кодов я не пытаюсь сказать, что он ищет свойство или поле под названием «тест». Сообщение об ошибке очень плохое. Как оказалось, я нашел ответ, который состоял в том, что случаи (верблюд против Паскаля) были разными между моей сущностью и запросом. – RebelScum