Моя цель - создать в моем контроллере многокритериальную систему для просмотра сеанса активности. У меня есть три способа фильтрации: по ключевым словам, по дате начала/конца и по пару действий (вход в систему/выход из системы, блокировка включения/блокировка ...). Пользователь может использовать один, один или все из них.Asp .NET MVC сортировать несколько критериев с помощью ajax/json
Это сообщение: How to structure controller to sort multiple criteria asp.net mvc, что очень близко к моим потребностям, но оно было подано в 2010 году, не могли бы вы рассказать мне, если он обновлен? есть ли более простое решение?
На данный момент я построил каждый критерий отдельно с помощью ajax/json/js. Он работает, но я не могу их накапливать.
//----Filter-----Date Period------
$("#btndatefilter").click(function() {
var startdate = $('#datestart').datepicker('getDate');
var enddate = $('#dateend').datepicker('getDate');
var dateFilter ={ StartDate: startdate.toISOString(), EndDate: enddate.toISOString() };
$.ajax({
url: "/AuditActivities/FilterByDate",
type: "GET",
data: dateFilter,
})
.done(function (auditActivity) {
$("#res").html(auditActivity);
});
});
//----Filter-----Activity------
$("#Activity").change(function() {
var index = $('#Activity').find('option:selected').val();
$.ajax({
url: "/AuditActivities/FilterByActivity",
type: "GET",
data: { chx: index}
})
.done(function (auditActivity) {
$("#res").html(auditActivity);
});
});
И в контроллере
public ActionResult FilterByActivity(int chx)
{
string returnpartial = "";
var auditActivity = db.AuditActivity.Include(a => a.Pc).Include(a => a.Activity).Include(a => a.Users);
switch (chx)
{
case 1:
auditActivity = auditActivity.Where(a => a.ActivityId==1 || a.ActivityId == 2);
returnpartial = "Indexactivityuser";
break;
case 2:
auditActivity = auditActivity.Where(a => a.ActivityId==3 || a.ActivityId == 4);
returnpartial = "Indexactivityuser";
break;
case 3:
auditActivity = auditActivity.Where(a => a.ActivityId==5 || a.ActivityId == 6);
returnpartial = "Indexactivityuser";
break;
}
return PartialView(returnpartial, auditActivity.ToList());
}
public ActionResult FilterByDate(DateFilter dateFilter)
{
DateTime endperiod = dateFilter.EndDate.AddDays(1).AddTicks(-1);
string returnpartial = "";
var auditActivity = db.AuditActivity.Include(a => a.Pc).Include(a => a.Activity).Include(a => a.Users);
auditActivity = auditActivity.Where(a => a.Date > dateFilter.StartDate && a.Date < endperiod).OrderBy(a => a.Date);
returnpartial = "Indexactivityuser";
return PartialView(returnpartial, auditActivity.ToList());
}
Большое спасибо. Я создал уникальный скрипт с новым методом в контроллере. С if .. для каждого критерия. Это работает. Большой ! – mrplume