|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
В стандартном приложении задан стандартный маршрут: Код: c# 1. 2. 3. 4. 5. 6.
Как сделать, чтобы до перехода по маршруту попасть в свой класс, чтобы выполнить в нем какие-то предварительные действия, а потом отправить дальше по маршруту? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2017, 17:50 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
big-dukeAntonariy, Вам нужны фильтры на дейстие. https://metanit.com/sharp/mvc/8.4.php Не, мне нужно Core, а это обычное MVC. hVostt дал нужную ссылку. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2017, 01:30 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
Antonariy, Да, точно, на Core не обратил внимание. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2017, 08:50 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
hVostt, Создал middleware-сервис по образцу: https://metanit.com/sharp/aspnet5/2.20.php А можно ли получить название контроллера и метода в контексте public async Task Invoke(HttpContext context) без парсинга адресной строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2017, 16:03 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
AntonariyА можно ли получить название контроллера и метода в контексте public async Task Invoke(HttpContext context) без парсинга адресной строки? Не, тогда тебе лучше делать фильтр, а не middleware: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters потому что до выполнения маршрутизации в Mvc, ничего ещё неизвестно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2017, 16:10 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
hVostt, Сделал IActionFilter (да и сервис все равно пригодился), и не понял, как в нем прервать переход по маршруту и вернуть заданный controller/action или сразу view? В примерах предлагается вернуть уже готовый контент: Код: c# 1. 2. 3. 4.
Я пытался так: Код: c# 1. 2.
не вышло. Можно вернуть что-нибудь в ContentResult и сделать context.HttpContext.Response.Redirect, но и без редиректа иногда хотелось бы возвращать не то, что запрошено. И кстати в mid-сервисе хотелось бы уметь делать тоже самое. Еще обнаружил, если ввести несуществующие controller/action, выдается пустая страница, до IActionFilter дело соответственно не доходит. В какой момент можно проверить, что маршрут сопоставлен, а если нет, то выдать указанный view? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2017, 13:59 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
AntonariyСделал IActionFilter (да и сервис все равно пригодился), и не понял, как в нем прервать переход по маршруту и вернуть заданный controller/action или сразу view? Нельзя. На момент выполнения IActionFilter, маршрут уже определён, это всего лишь обработка до и после выполнения определённого действия, заставить повторить жизненный цикл по другому маршруту можно только через полноценный редирект. Другой вью (на самом деле, другой результат) вернуть можно через свойство Result контекста фильтра. AntonariyЯ пытался так: Возможно, что-то отменяет фильтр. Проверь свойство Canceled в OnActionExecuted. AntonariyИ кстати в mid-сервисе хотелось бы уметь делать тоже самое. Cмотри раздел на этот счёт Using middleware in the filter pipeline в https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters AntonariyЕще обнаружил, если ввести несуществующие controller/action, выдается пустая страница, до IActionFilter дело соответственно не доходит. Естественно не доходит, фильтр действия работает только поверх существующего и определённого маршрутом действия :) AntonariyВ какой момент можно проверить, что маршрут сопоставлен, а если нет, то выдать указанный view? Общая информация здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing можно определить последним маршрут по умолчанию для любых URL, не попавших под маршрутизацию выше, на определённое действие какое-нибудь. это самый простой путь, но менее гибкий, если потребуется умная маршрутизация, например ЧПУ роутить на живые контроллеры, этот вариант не подойдёт. а можешь дописать свой маршрутизатор и там уже принимать сложные решения и отправлять исполнение по нужному пути. писанины будет больше, но зато гибко. есть конечно и другие варианты, как накостылячить свой код :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2017, 00:57 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
вопрос по Core условный пример есть параметр treeId, который должен быть обработан абсолютно во всех маршрутах каким-то централизованным обработчиком во всех приложениях используется Windows-авторизация по treeId лезем в БД, читаем необходимые для работы приложения группы AD а по samAccountName в AD смотрим, входит ли в такие группы пользователь как лучше построить маршрут и как потом его обрабатывать? mySite\myApplication\TreeId\18\controller\action\id\123 или как-то так mySite\myApplication\controller\action\id\123\TreeId\18 Желательно эту обработку сделать централизованно, чтобы не вешать на каждый метод ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 17:03 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
andreymx, Код: c# 1. 2. 3.
Ну и получайте все URL через маршрут Tree, указывать всегда treeId не нужно, если на контроллер пришёл по маршруту "Tree", в контексте будет уже это значение, которое будет сохраняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2018, 19:53 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
hVosttandreymx, Код: c# 1. 2. 3.
Ну и получайте все URL через маршрут Tree, указывать всегда treeId не нужно, если на контроллер пришёл по маршруту "Tree", в контексте будет уже это значение, которое будет сохраняться.а c каким url-ом это будет работать? щаз такой http://localhost:2274/api/values/GetFiltersData ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2018, 12:29 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
нифига не выходит есть ли где ссылочка по подходящий мне пример? Код: c# 1. 2. 3. 4. 5. 6. 7.
старый маршрут обрабатывается ок http://localhost:2274/api/values/GetFiltersData новый как ни пробовал, всё 404 лезет ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2018, 17:04 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
вот так получается Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
работает как http://localhost:2274/api/values/GetFiltersDataGet так и http://localhost:2274/api/tree-8/values/GetFiltersDataGet но это не совсем то, что хотелось бы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2018, 17:29 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
andreymxно это не совсем то, что хотелось бы Ну я показал для примера, а не конечное решение. Расскажите ещё раз как хотелось бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 00:58 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
За пример большое спасибо Чего хочу Сам получившийся урл меня устраивает Нужен совет - как централізовано осуществить проверку на основании treeid и других параметров А то я без опыта ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:49 |
|
Маршрутизация в MVC Core
|
|||
---|---|---|---|
#18+
andreymxесть параметр treeId, который должен быть обработан абсолютно во всех маршрутах каким-то централизованным обработчикомпроверьте что ваши хотелки соответствуют REST. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2018, 07:58 |
|
|
start [/forum/topic.php?fid=18&msg=39674621&tid=1355176]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 269ms |
0 / 0 |