powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Туплю с маршрутами
10 сообщений из 10, страница 1 из 1
Туплю с маршрутами
    #39467880
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ж надо такую систему придумать. Вроде все понятно, когда доки читаешь, но шаг влево-вправо от примеров - и нифига не работает как надо.

Имею такую маршрутизацию:

Код: c#
1.
2.
3.
4.
5.
app.UseMvc(routes =>
            {
                routes.MapRoute("areas", "{area}/{controller}/{action=Index}/{id?}");
                routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
            });

Соответственно маршруты имеют вид area/controller/action/id или controller/action/id

Пока id целочисленный всё работает, но у одного из объектов id текстовый, и он не канает.
Пробовал добавить атрибуты маршрутизации в класс и метод:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[Area("Admin")]
[Route("Admin/Object")]
    public class ObjectController : Controller
    {
        [Route("{Index?}")]
        public IActionResult Index() => View(new CommonView(repo.db));

        [Route("Edit/{ID?}")]
        public IActionResult Edit(string ID) => View(new ViewObject(repo.db, ID));

В результате Edit работает, но любая дичь типа http://localhost:5349/Admin/Object/йцуйцуйцу идет по маршруту Admin/Object/Index.

Как сделать, чтобы в этом контроллере на Index попадал только маршрут Admin/Object/Index или Admin/Object?
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39467914
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Всё правильно работает. Так и должно.

Сначала попадает (выделено) http://localhost:5349 /Admin/Object/ йцуйцуйцу

под [Route("Admin/Object")]

Затем http://localhost:5349 /Admin/Object/ йцуйцуйцу

под [Route("{Index?}")]


AntonariyКак сделать, чтобы в этом контроллере на Index попадал только маршрут Admin/Object/Index или Admin/Object?

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



Догадался, что можно нафигачить несколько атрибутов Route, так заработало как надо:
Код: c#
1.
2.
3.
        [Route("Index")]
        [Route("")]
        public IActionResult Index() => View(new CommonView(repo.db));
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468068
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, ты перешел на шарп????
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468173
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДогадался, что можно нафигачить несколько атрибутов Route, так заработало как надо:

Да, и учитывай, что параметры, типа {id?} жадные, особенно без указания типа.
Если используешь Area, лучше забивать конкретные маршруты для каждой Area, без {area}:

Area1/{controller}/...
Area2/...

Вместо

{area}/...

Иначе могут быть непредвиденные артефакты :)
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468249
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariy, ты перешел на шарп???? дык VB под Core нетути, вот с февраля и перешел. хотя вроде обещают.

да и в принципе вообще без проблем перешел, просто взял и начал пейсать на шарпе, как будто давно уже этим занимался. возвращаться на VB смысла нет.
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468544
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин.

Теперь отваливается статика

http://localhost:5349/js/site.js
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468546
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, нет, не отваливается.

Файла реально не существует.
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468629
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Можна кстати перехватывать маршруты, похожие на файлы после обработчика статических файлов, и слать всякие алерты :)
...
Рейтинг: 0 / 0
Туплю с маршрутами
    #39468657
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariy,

Можна кстати перехватывать маршруты, похожие на файлы после обработчика статических файлов, и слать всякие алерты :)Я перехватываю, когда все прочие перехватчики обломались, пока не вижу смысла лезть им поперек маршрута :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class NonHandledRoute : IRouter
    {
        public VirtualPathData GetVirtualPath(VirtualPathContext context)
        {
            throw new NotImplementedException();
        }

        public Task RouteAsync(RouteContext context)
        {

                context.Handler = async ctx =>
                {
                    byte[] bytes = { };
                    string r = ctx.Request.Path.ToString().TrimEnd('/');
                    if (r == "/Errors/RouteError")
                    {
                        string s = string.Format("<html><head><meta charset='utf-8'/><title>Ошибка навигации</title></head><body><h2>Ошибка навигации</h2><p>Отсутствует контроллер <b>/Errors/RouteError</b></p><p>Путь {0} является недействительным</p></body></html> ", context.HttpContext.Request.Path);
                        bytes = System.Text.Encoding.UTF8.GetBytes(s);
                    } else { 
                        ctx.Response.Redirect("/Errors/RouteError?Route=" +r);
                    }
                    await ctx.Response.Body.WriteAsync(bytes, 0, 0);
                };
                return Task.CompletedTask;
        }
    }
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Туплю с маршрутами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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