Я работаю над базовой системой управления проблемами для изучения ASP.NET MVC. Я установил его на достаточно приличный уровень, но столкнулся с проблемой.
У меня есть контроллер с именем Issue с представлением под названием Open. / Issue / Open перечисляет все открытые проблемы, которые в данный момент зарегистрированы в системе. Я определил маршрут так:
routes.MapRoute(
"OpenSort", // Route name
"Issue/Open/{sort}", // URL with parameters
new { controller = "Issue", action = "Open", sort = "TimeLogged" } // Parameter defaults
);
Пока все работает нормально, используя следующий код в IssueController.cs:
public ActionResult Open(string sort)
{
var Issues = from i in db.Issues where i.Status == "Open" orderby i.TimeLogged ascending select i;
switch (sort)
{
case "ID":
Issues = from i in db.Issues where i.Status == "Open" orderby i.ID ascending select i;
break;
case "TimeLogged":
goto default;
case "Technician":
Issues = from i in db.Issues where i.Status == "Open" orderby i.Technician ascending select i;
break;
case "Customer":
Issues = from i in db.Issues where i.Status == "Open" orderby i.Customer ascending select i;
break;
case "Category":
Issues = from i in db.Issues where i.Status == "Open" orderby i.Category ascending select i;
break;
case "Priority":
Issues = from i in db.Issues where i.Status == "Open" orderby i.Priority ascending select i;
break;
case "Status":
Issues = from i in db.Issues where i.Status == "Open" orderby i.Status ascending select i;
break;
default:
break;
}
ViewData["Title"] = "Open Issues";
ViewData["SortID"] = sort.ToString();
return View(Issues.ToList());
}
Это работает нормально (хотя, мне интересно, есть ли лучший способ обработать мое определение запроса, чем переключатель?), Но теперь я хочу иметь возможность сделать две вещи в представлении «Открытые проблемы»:
- Сортировать по любому из заголовков - ОК
- Фильтр по определенным рубрикам (техник, клиент, категория, приоритет, статус) - ??
Я не могу понять, как передать два параметра в контроллер, чтобы я мог организовать свои запросы. Я также только что понял, что если я не выясню, как генерировать свои запросы на лету, мне понадобится (количество опций сортировки) * (количество опций фильтра) в моем переключателе.
Argh, кто-нибудь может указать мне в правильном направлении? Ура!