public async Task <IActionResult> Index(string sortOrder = null, string currentFilter = null, string searchString = null, int?page = null) { ViewData["CurrentSort"] = sortOrder; ViewData["SortID"] = sortOrder == "id" ? "id_desc" : "id"; ViewData["SortValidFrom"] = sortOrder == "validFrom" ? "validFrom_desc" : "validFrom"; ViewData["SortValidTo"] = sortOrder == "validTo" ? "validTo_desc" : "validTo"; ViewData["SortCurrencyID"] = sortOrder == "currencyID" ? "currencyID_desc" : "currencyID"; ViewData["SortRate"] = string.IsNullOrEmpty(sortOrder) ? "rate_desc" : ""; ViewData["SortRateTypeID"] = sortOrder == "ratetypeID" ? "ratetypeID_desc" : "ratetypeID"; repository.SortOrder = sortOrder != null && sortOrder.EndsWith("_desc") ? SortOrder.Descending : SortOrder.Ascending; repository.SortFunction = getSortFunction(sortOrder); if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewData["CurrentFilter"] = searchString; repository.SearchString = searchString; repository.PageIndex = page ?? 1; var l = await repository.GetObjectsList(); return(View(new RateViewsList(l))); }