Как исправить эту проблему, System.Linq.Dynami c .ParseException: Нет свойства или поля, как c, существует в типе 'TblEventsManagements'? - PullRequest
0 голосов
/ 12 февраля 2020

введите описание изображения здесь У меня есть этот контроллер GetList, и я использую Linq.Dynami c для фильтрации полей в таблице, в которой выполняется поиск, и это использует dataTable для обработки на стороне сервера. Кто может помочь мне решить эту проблему? Ниже приведены мои логики c и строка, в которой выдается эта ошибка;

[\[HttpPost\]
   public ActionResult GetList()
    {
        //Server side Parameter.
        int start = Convert.ToInt32(Request\["start"\]);
        int length = Convert.ToInt32(Request\["length"\]);
        string searchValue = Request\["search\[value\]"\];
        string sortColumnName = Request\["columns\[" + Request\["order\[0\]\[column\]"\] + "\]\[name\]"\];
        string sortDirection = Request\["order\[0\]\[dir\]"\];


        using (eNtsaOnlineRegistrationDBContext db = new eNtsaOnlineRegistrationDBContext())
        {

            IQueryable<TblEventsManagements> empList = db.TblEventsManagements;
           int totalrows = empList.Count();
            int totalrowsafterfiltering = totalrows;


            if (!string.IsNullOrEmpty(searchValue))
            {
                empList = empList.Where(x => x.TrainingType.Contains(searchValue) || x.TrainingDescription.Contains(searchValue) || x.Price.ToString().Contains(searchValue.ToLower())
                || x.Venue.Contains(searchValue) || x.Facilitator.Contains(searchValue) || x.WhoAttend.Contains(searchValue) || x.Rsvp.Contains(searchValue));


            }


            empList = empList.OrderBy(sortColumnName + "" + sortDirection).Skip(start).Take(length);



            return Json(new { data = empList, draw = Request\["draw"\], recordsTotal = totalrows, recordsFiltered = totalrowsafterfiltering }, JsonRequestBehavior.AllowGet);
        }



    }][1]

Я забыл поставить свой вызов Ajax, сначала я подумал, что в моей таблице отсутствует поле. Теперь я получаю поле или тип «TrainingTypeas c» не существует, это хорошо для моей таблицы из базы данных. Где я могу улучшить эту логи c товарищей? Пожалуйста, помогите.

 <script>

        $(document).ready(function () {

               $("#EventManagementTable").DataTable({
                "ajax": {
                    "url": "/Dashboard/GetList",
                    "type": "POST",
                    "datatype":"json"
                },
                   "columns": [
                    {"data": "TrainingType", "name": "TrainingType"},
                    { "data": "TrainingDescription", "name": "TrainingDescription" },
                    { "data": "Price", "name": "Price" },
                    { "data": "Venue", "name": "Venue" },
                    { "data": "Facilitator", "name": "Facilitator" },
                    { "data": "WhoAttend", "name": "WhoAttend" },
                    {"data": "RSVP", "name": "RSVP"},
                ],

                "serverSide": "true",
                "order":[0,"asc"],
                "processing": "true",
                "language": {
                    "processing":"processing... please wait"
                }



            });

        });

1 Ответ

0 голосов
/ 12 февраля 2020

Замените это:

empList = empList.OrderBy(sortColumnName + "" + sortDirection).Skip(start).Take(length);

на это:

 empList = empList.OrderByPropertyName(sortColumnName,sortDirection).Skip(start).Take(length)

и добавьте это в ваш проект:

using System.Collections.Generic;
using System.Linq;

namespace "YourNameSpace"
{
    public static class ListExtension
    {
        public static IOrderedEnumerable<T>  OrderByPropertyName<T>(this ICollection<T> list, string sortColumnName, string sortDirection)
        {
            var type = typeof(T);

            var property = sortColumnName == "" ? type.GetProperties().FirstOrDefault() : type.GetProperties().Where(p => p.Name == sortColumnName).FirstOrDefault();

            return sortColumnName == "asc" ? list.OrderBy(p => property.GetValue(p)) : list.OrderByDescending(p => property.GetValue(p));
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...