powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / добавление скрытого, неизменяемого параметра к маршруту
3 сообщений из 3, страница 1 из 1
добавление скрытого, неизменяемого параметра к маршруту
    #38833767
Pessimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть контроллер, которые возвращает перечень городов:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 public class CitiesController : Controller
    {
        public ActionResult Index(int region, string org)
        {
            //// много кода
            return View();
        }
    }


Задача следующая: не передавать код региона как параметр в запросе, а изменить url. Например: localhost/ru/cities, localhost/by/cities, localhost/ua/cities. При этом нужно использовать один и тот же контроллер Cities, но int region получать в зависимости от адреса.
Была попытка поменять маршруты:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            routes.MapRoute(
                name: "ru",
                url: "ru/{controller}/{action}/{region}",
                defaults: new { controller = "Cities", action = "Index", region = 1 }
            );
            routes.MapRoute(
              name: "by",
              url: "en/{controller}/{action}/{region}",
              defaults: new { controller = "Cities", action = "Index", region = 2 }
          );


В принципе все работало, но при запросе localhost/ru/cities?2, получается каша. Можно ли как-то сделать так чтобы region нельзя было изменить в запросе? Или возможно есть более правильный способ решить мою проблему?
...
Рейтинг: 0 / 0
добавление скрытого, неизменяемого параметра к маршруту
    #38833794
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pessimus,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
routes.MapRoute(
                name: "ru",
                url: "ru/{controller}/{action}/{region}",
                defaults: new { controller = "Cities", action = "Index", region = 1 }
            );
            routes.MapRoute(
              name: "by",
              url: "en/{controller}/{action}/{region}",
              defaults: new { controller = "Cities", action = "Index", region = 2 }
          );



убрать выделенное.


Более правильный способ, обрабатывать текстовое представление {region} в самом контроллере, а не на уровне маршрутизации:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
routes.MapRoute(
                name: "someCity",
                url: "{region}/cities/{action}",
                defaults: new { controller = "Cities", action = "Index" }
            );


public ActionResult Index(string region, string org)
        {
            int regionCode;
            if(!SomeService.GetRegionIdFromName(region, out regionCode))
            {
                return HttpNotFound();
            }
            //// много кода
            return View();
        }
...
Рейтинг: 0 / 0
добавление скрытого, неизменяемого параметра к маршруту
    #38833924
Pessimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt, первый вариант с удалением /{region} из маршрута не помог. При запросе с параметром region=555 произойдет изменение региона.
Воспользуюсь вторым вариантом. Спасибо за помощ
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / добавление скрытого, неизменяемого параметра к маршруту
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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