Я работаю над базовой системой управления проблемами, чтобы изучить 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());
}
Это прекрасно работает (хотя, интересно, есть ли лучший способ обработать мое определение запроса, чем переключатель?), но теперь я хочу иметь возможность сделать две вещи в представлении "Открытые проблемы":
- Сортировка по любому из заголовков - OK
- Фильтровать определенные заголовки (техник, клиент, категория, приоритет, статус) -
Я не могу понять, как передать два параметра контроллеру, чтобы я мог организовать свои запросы. Я также понял, что, если я не выясню, как создавать запросы на лету, мне понадобится (количество опций сортировки) * (количество параметров фильтра) в моем коммутаторе.
Арк, может ли кто-нибудь указать мне в правильном направлении? Ура!