powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Наследование контроллера и маршрутизация
9 сообщений из 9, страница 1 из 1
Наследование контроллера и маршрутизация
    #39515720
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объявлен базовый контроллер:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public abstract class PQController<TEntity> : Controller {

    [Route("GetList")]
    public Paging<TEntity> GetList() {}

    protected Paging<T> GetTypedList<T>() {}
}



От него унаследован другой контроллер с сокрытым методом GetList():

Код: c#
1.
2.
3.
4.
public class ObjectController : PQController<clsObject>

[Route("GetList")]
public new Paging<ViewObject> GetList() => base.GetTypedList<ViewObject>()

И это не работает, от маршрутизатора не скроешься, он не может определиться между PQController.GetList() и ObjectController.GetList()

Как бы направить его на ObjectController.GetList?
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515827
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

[ActionName("GetList")] пробовал?
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515873
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariy,

[ActionName("GetList")] пробовал?Да, ни на что не влияет, поведение зависит только от атрибута Route.

Если он не указан, то 404, если указан у обоих классов, то 500. Если не указывать в PQController, то 404 у всех классов, кто не скрывает GetList().
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515876
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyОт него унаследован другой контроллер
Код: c#
1.
2.
3.
4.
    [Area("Admin")]
    [Authorize]
    [Route("Admin/Object")]
    public class ObjectController : PQController<UwsObject>
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515878
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как бы хотел чтоб унаследовалось? я просто не понимаю, роут то один и он строгий без указания контролера. считай 1 к 1
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515880
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuа как бы хотел чтоб унаследовалось? я просто не понимаю, роут то один и он строгий без указания контролера. считай 1 к 1

Верно, кстати. Единственно, что поможет, это override. Или делать свою маршрутизацию поверх MvcRouter.
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515883
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyhVosttAntonariy,

[ActionName("GetList")] пробовал?Да, ни на что не влияет, поведение зависит только от атрибута Route.

Это будет работать, если ты в роут запишешь {action}, тогда он забиндится на нужный экшен.
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515888
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

В таблице маршрутизации записи идут строго по порядку. Маршрутизатор выбирает первый попавшийся. Соответственно любые переопределения после работать не будут. Также будет ошибка, если выяснится, что на один и тот же роут подходит больше, чем один обработчик (2 и более экшенов).
...
Рейтинг: 0 / 0
Наследование контроллера и маршрутизация
    #39515889
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Поэтому финт ушами, это сделать virtual/override, понятно что сигнатура в этом случае будет только одна. В ином случае, тебе придётся воспользоваться шаблонизацией [controller]/{action}, например, и переопределением имени действия на другой метод.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Наследование контроллера и маршрутизация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]