Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Наследование контроллера и маршрутизация / 9 сообщений из 9, страница 1 из 1
05.09.2017, 14:31
    #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
05.09.2017, 15:52
    #39515827
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наследование контроллера и маршрутизация
Antonariy,

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

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

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

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

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

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

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

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


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