powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите составить маршрут
6 сообщений из 31, страница 2 из 2
Помогите составить маршрут
    #39105611
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronhVostt, skyANA, в общем не ругайтесь. Если ТСу нужны 3 экшн метода с одинаковым именем Action, но разной сигнатурой, то 100% верное решение от skyANA, если такого строгого условия нет, то решение более верное у hVostt'а.

Даже если имена самих экшенов менять нельзя хз по каким причинам, нужно использовать RouteAttribute.

Селектор нужен для других целей, для более сложной стратегии принятия решения в выборе экшена, и даже в этом случае это говорит о плохом дизайне и надо по возможности искать другое решение. Т.е. это костыль, когда ни вправо ни влево — никуда и приходится вертеться.
...
Рейтинг: 0 / 0
Помогите составить маршрут
    #39105643
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAА в той постановке, что указал ТС, следует использовать своего наследника ActionMethodSelectorAttribute.

авторЕсть контроллер Documents и в нем 3 действия Action() Action(int id) Action(string x)
Как заставить MVC вызывать нужные действия на контроллере? Как уже не пробовал - все одно: неоднозначность...

Может я чего-то не понимаю, но тогда объясни, как эту постановку можно понять таким образом, что надо привлекать селектор, а не маршрутизатор? Именно в такой постановке задача решается через маршрутизацию.

Для чего нужен селектор? Ты предлагаешь написать свою реализацию класса, и использовать кастомный атрибут, вместо того, чтобы воспользоваться штатными средствами, специально для этого предназначенными, без написании лишнего, ненужного кода.

Для чего? Ты всегда так делаешь?Ты походу по психотипу своему 1-й Логик :)

У ТС дано три метода с одинаковым названием и разной сигнатурой . Одинаковым названием. Одинаковым. :)
Возникает ошибка: Ambiguous action method call. Ошибка эта исправляется без изменения названия методов реализацией и использованием наследника от ActionMethodSelectorAttribute.

Относительно вопроса: "Ты всегда так делаешь?". Нет я так не делаю.
Обычно я чётко формулирую задачу и обсуждаю её, а не сначала пишу код из трёх методов с одинаковым названием.

P.S.: для интереса можешь погуглить: "Ambiguous action method call + ActionMethodSelectorAttribute".
...
Рейтинг: 0 / 0
Помогите составить маршрут
    #39105781
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, господа!
Оба правы и не правы одновременно.
skyANA - дал верное решение в контексте поставленной задачи, а именно: если 3 метода с разной сигнатурой - то действительно без ActionMethodSelectorAttribute не обойтись. Единственно скорее нужно сделать так:
Код: c#
1.
return controllerContext.HttpContext.Request.RequestContext.RouteData.Values[Name] != null;


Однако Axeleron - тоже прав. Действительно если пойти по пути переименования методов на контроллере - его решение с точки зрения "правильности следования" именно концепции MVC - правильное.
Оба решения имеют право на жизнь ибо оба правильные.

НО! Следует заметить вот что, если переименовывать методы - мы ведь точно не знаем кто и где их вызывает? Такое в принципе возможно. Я бы с осторожностью отнесся к переименованию чего-либо в большом проекте.

Спасибо, Други! Вы очень помогли.
ПыСы - пришло понимание маршрутизации ))
...
Рейтинг: 0 / 0
Помогите составить маршрут
    #39105960
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ ТС дано три метода с одинаковым названием и разной сигнатурой . Одинаковым названием. Одинаковым. :)
Возникает ошибка: Ambiguous action method call. Ошибка эта исправляется без изменения названия методов реализацией и использованием наследника от ActionMethodSelectorAttribute.

Эта ошибка исправляется БЕЗ создания дополнительного класса, с помощью RouteAttribute, ИЛИ с помощью MapRoute + изменение названия экшенов (причины, по которым нельзя изменить названия самих экшенов мне трудно представить, ведь URL не изменится).

Наследник селектора здесь нафиг не нужен.

skyANAОбычно я чётко формулирую задачу и обсуждаю её, а не сначала пишу код из трёх методов с одинаковым названием.

Ну а насчёт применяемых инструментов как? Берёшь инструменты, подходящие для решения задачи или берёшь что под руку попало? Другими словами, шуруп отвёрткой закручиваешь, или кривым кухонным ножом? Я вот к чему.

skyANAP.S.: для интереса можешь погуглить: "Ambiguous action method call + ActionMethodSelectorAttribute".

Мне он никогда не был нужен, хотя я знаю о нём. Необходимость в его применении это уже сам по себе факт косяка в архитектуре. При чём косяк очень конкретный!
...
Рейтинг: 0 / 0
Помогите составить маршрут
    #39105964
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ughunterесли 3 метода с разной сигнатурой - то действительно без ActionMethodSelectorAttribute не обойтись

Бред. Я уже приводил решение, где прекрасно без него можно обойтись. При чём 2 штуки.


ughunterОба решения имеют право на жизнь ибо оба правильные.

Задачи с маршрутизацией надо решать средствами маршрутизации, а не хернёй страдать. Сколько уж говорить можна-то. Нет здесь решений с правом на жизнь типа. Есть очень конкретные инструменты для своих задач и правильно -- это использовать подходящие инструменты.


ughunterСпасибо, Други! Вы очень помогли.
ПыСы - пришло понимание маршрутизации ))

Да не за что )) Обращайся!
...
Рейтинг: 0 / 0
Помогите составить маршрут
    #39106661
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДругими словами, шуруп отвёрткой закручиваешь, или кривым кухонным ножом? Я вот к чему.Давеча менял смеситель на кухне, так обошёлся разводным ключом, не стал за 100 баксов кулачковый покупать, что идеально подошёл бы.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите составить маршрут
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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