Ссылка на объект Datatables не установлена ​​на экземпляр объекта для одной переменной - PullRequest
0 голосов
/ 30 октября 2018

Это моя реализация сервера данных. FilterInput содержит 5 переменных:

  1. Уровень <- строка </li>
  2. Сообщение <- строка </li>
  3. Исключение <-string </li>
  4. StartDate <- DateTime </li>
  5. EndDate <- DateTime </li>

По какой-то причине, когда я запускаю этот код как есть, я всегда получаю эту ошибку:

{System.NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта.

Это относится к этой строке:

data = data.Where(
                        u => u.Level.ToString().ToLower().Contains(FilterInput.Level.ToLower()) &&
                        u.Message.ToString().ToLower().Contains(FilterInput.Message.ToLower()) &&
                        u.Exception.ToString().ToLower().Contains(FilterInput.Exception.ToLower())
                    ).ToList();

Однако, если я уберу поиск FilterInput.Exception, все снова будет работать нормально. Я проверил это с вводом («abc») или без ввода («»), и результаты совпадают. Другие FilterInputs не имеют ту же ошибку.

public JsonResult Search(SearchViewModels Input, EventLogsSearchViewModel FilterInput)
{
    JsonResult result = new JsonResult(null);
    try
    {

        var data = dbContext.EventLogs.ToList();
        int totalRecords = data.Count;

        var modelStructure = new Dictionary<int, string>();
        modelStructure.Add(1, "Level");
        modelStructure.Add(2, "TimeStamp");
        modelStructure.Add(3, "LogEvent");
        modelStructure.Add(4, "Message");
        modelStructure.Add(5, "MessageTemplate");
        modelStructure.Add(6, "Exception");
        modelStructure.Add(7, "Properties");
        var StartDate = FilterInput.StartDate != default(DateTime);
        var EndDate = FilterInput.EndDate != default(DateTime);
        if ((!string.IsNullOrEmpty(FilterInput.Level) && !string.IsNullOrWhiteSpace(FilterInput.Level)) ||
            (!string.IsNullOrEmpty(FilterInput.Message) && !string.IsNullOrWhiteSpace(FilterInput.Message)) ||
            (!string.IsNullOrEmpty(FilterInput.Exception) && !string.IsNullOrWhiteSpace(FilterInput.Exception)) ||
            (StartDate && EndDate))
        {
            data = data.Where(
                u => u.Level.ToString().ToLower().Contains(FilterInput.Level.ToLower()) &&
                u.Message.ToString().ToLower().Contains(FilterInput.Message.ToLower()) &&
                u.Exception.ToString().ToLower().Contains(FilterInput.Exception.ToLower())
            ).ToList();

            data = data.Where(u => u.TimeStamp >= FilterInput.StartDate && u.TimeStamp <= FilterInput.EndDate).ToList();
        }
        if (!(string.IsNullOrEmpty(Input.Order) && string.IsNullOrEmpty(Input.OrderDir)))
        {
            var columnName = modelStructure.FirstOrDefault(f => f.Key == Convert.ToInt32(Input.Order));
            data = data.AsQueryable().OrderBy(columnName.Value + " " + Input.OrderDir).ToList();
        }

        int recFilter = data.Count;
        data = data.Skip(Input.StartRec).Take(Input.PageSize).ToList();
        var modifiedData = data.Select(u => new EventLogsListViewModel
        {
            Id = u.Id,
            Message = u.Message,
            MessageTemplate = u.MessageTemplate,
            Level = u.Level,
            TimeStamp = u.TimeStamp,
            Exception = u.Exception,
            Properties = u.Properties,
            LogEvent = u.LogEvent
        });
        result = this.Json(new
        {
            draw = Convert.ToInt32(Input.Draw),
            recordsTotal = totalRecords,
            recordsFiltered = recFilter,
            data = modifiedData,
            order = Input.Order,
            orderdir = Input.OrderDir
        });
    }
    catch (Exception e)
    {
        logger.LogError(e, LoggingGlobals.LoadingException);
    }
    return result;
}

РЕДАКТИРОВАТЬ: исключение по-прежнему происходит, даже когда FilterInput.Exception не является нулевым

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