Все работало отлично, когда у меня был настроен поиск, который позволял клиенту выполнять поиск по одному полю за раз, и проблема возникла, когда я внес изменения, позволяющие выполнять множественный одновременный поиск.
Это код:
Код: Выделить всё
private readonly PFDTrustContext _context;
public IndexModel(PFDTrustContext context)
{
_context = context;
}
public PaginatedList Clients { get; set; }
// sorting
public string AcctNumberSort { get; set; }
public string FirstNameSort { get; set; }
public string LastNameSort { get; set; }
public string SSNSort { get; set; }
public string CurrentSort { get; set; }
// filtering
public string FilterLN { get; set; }
public string FilterFN { get; set; }
public string FilterSSN { get; set; }
public string FilterAcctNum { get; set; }
public string CurrentFilter { get; set; }
public async Task OnGetAsync(string sortOrder, string searchStringLN, string searchStringFN, string searchStringSSN, string searchStringAcctNum, string filterLN, string filterFN, string filterSSN, string filterAcctNum, string currentFilter, int? pageIndex)
{
CurrentSort = sortOrder;
// Sorting
LastNameSort = string.IsNullOrEmpty(sortOrder) ? "lastName_desc" : "";
FirstNameSort = sortOrder == "firstName" ? "firstName_desc" : "firstName";
AcctNumberSort = sortOrder == "acctNumber" ? "acctNumber_desc" : "acctNumber";
SSNSort = sortOrder == "SSN" ? "SSN_desc" : "SSN";
// Paging
if (searchStringLN != null)
{
pageIndex = 1;
}
else
{
searchStringLN = filterLN;
}
if (searchStringFN != null)
{
pageIndex = 1;
}
else
{
searchStringFN = filterFN;
}
if (searchStringSSN != null)
{
pageIndex = 1;
}
else
{
searchStringSSN = filterSSN;
}
if (searchStringAcctNum != null)
{
pageIndex = 1;
}
else
{
searchStringAcctNum = filterAcctNum;
}
// Searching/Filtering
FilterLN = searchStringLN;
FilterFN = searchStringFN;
FilterSSN = searchStringSSN;
FilterAcctNum = searchStringAcctNum;
if (!string.IsNullOrEmpty(FilterLN))
{
CurrentFilter = FilterLN;
}
else if (!string.IsNullOrEmpty(FilterSSN))
{
CurrentFilter = FilterSSN;
}
else if (!string.IsNullOrEmpty(FilterAcctNum))
{
CurrentFilter = FilterAcctNum;
}
else
{
CurrentFilter = FilterFN;
}
// Sorting
IQueryable clients = from c in _context.Clients
select c;
// Searching
if (!string.IsNullOrEmpty(searchStringLN))
{
clients = clients.Where(c => c.LastName.ToUpper().Contains(searchStringLN.ToUpper()));
}
if (!string.IsNullOrEmpty(searchStringFN))
{
clients = clients.Where(c => c.FirstName.ToUpper().Contains(searchStringFN.ToUpper()));
}
if (!string.IsNullOrEmpty(searchStringSSN))
{
clients = clients.Where(c => c.SSN.ToString().Contains(searchStringSSN));
}
if (!string.IsNullOrEmpty(searchStringAcctNum))
{
clients = clients.Where(c => c.AcctNumber.ToString().Contains(searchStringAcctNum));
}
// Sorting
switch (sortOrder)
{
case "lastName_desc":
clients = clients.OrderByDescending(c => c.LastName);
break;
case "acctNumber":
clients = clients.OrderBy(c => c.AcctNumber);
break;
case "acctNumber_desc":
clients = clients.OrderByDescending(c => c.AcctNumber);
break;
case "firstName_desc":
clients = clients.OrderByDescending(c => c.FirstName);
break;
case "firstName":
clients = clients.OrderBy(c => c.FirstName);
break;
case "SSN":
clients = clients.OrderBy(c => c.SSN);
break;
case "SSN_desc":
clients = clients.OrderByDescending(c => c.SSN);
break;
default:
clients = clients.OrderBy(c => c.LastName);
break;
}
// Pagination
int pageSize = 12;
Clients = await PaginatedList.CreateAsync(
clients.AsNoTracking(), pageIndex ?? 1, pageSize);
}
Код: Выделить всё
@Html.DisplayNameFor(model => model.Clients[0].ClientId)
@Html.DisplayNameFor(model => model.Clients[0].AcctNumber)
@Html.DisplayNameFor(model => model.Clients[0].FirstName)
@Html.DisplayNameFor(model => model.Clients[0].LastName)
@Html.DisplayNameFor(model => model.Clients[0].MdlInit)
@Html.DisplayNameFor(model => model.Clients[0].SSN)
@Html.DisplayNameFor(model => model.Clients[0].DOB)
@Html.DisplayNameFor(model => model.Clients[0].InitialEntryDate)
@foreach (var item in Model.Clients)
{
@Html.DisplayFor(modelItem => item.ClientId)
@Html.DisplayFor(modelItem => item.AcctNumber)
@Html.DisplayFor(modelItem => item.FirstName)
@Html.DisplayFor(modelItem => item.LastName)
@Html.DisplayFor(modelItem => item.MdlInit)
@Html.DisplayFor(modelItem => item.SSN, "SSN")
@Html.DisplayFor(modelItem => item.DOB)
@Html.DisplayFor(modelItem => item.InitialEntryDate)
Edit Client |
Transactions
}
@{
var prevDisabled = !Model.Clients.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.Clients.HasNextPage ? "disabled" : "";
}
Previous
Next
Подробнее здесь: https://stackoverflow.com/questions/585 ... azor-pages
Мобильная версия