MVC определенно требует класс Controller
для обработки всех запросов. Вы не можете просто выставить класс Select
без наследования Controller
. Однако может быть способ минимизировать количество «сквозной избыточности» в вашем контроллере.
Простое отражение
Если ваши методы принимают одинаковые параметры, вы можете использовать рефлексию и умную маршрутизацию, чтобы получить результаты, которые вы ищете.
Например, URL /Administration/Loc/Select/Topics?dataSourceId=x&locationId=y
может быть перенаправлен с /Administration/{Controller}/{Action}/{Method}
на:
public ActionResult Select(string method, string dataSourceID, string locationID) {
var methodInfo = typeof(Select).GetMethod(method);
return methodInfo.Invoke(dataSourceID, locationID);
}
MVC Routing
Если методы принимают разные параметры, то было бы довольно утомительно использовать отражение для сопоставления входных данных с параметрами. Огромная часть инфраструктуры MVC находится в маршрутизации. Он много размышляет, чтобы выполнить сопоставление запроса с методом Action, и было бы довольно утомительно воссоздать эту функциональность.
Возможно, можно использовать механизм маршрутизации MVC для передачи запросов контроллеру. Это может быть отличным решением, но оно определенно требует гораздо больше исследований, чем у меня есть время, извините. Хорошая новость заключается в том, что MVC имеет открытый исходный код, поэтому вы наверняка можете увидеть, как они это делают!