r3st1k25
@r3st1k25
Senior PHPomidor

Как реализовать маршрутизацию в виде domain.com/users и domain.com/user/123?

Привет, надеюсь что кто-нибудь подскажет решение данной задачи.

Имеется контроллер UsersController, с методами Index() и User(int id), на данный момент маршрутизация настроена следующим образом:
routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                new[] { "Proj.Controllers" }
            );


(1)domain.com/users запросит метод Index() контроллера UsersController.
(2)domain.com/users/user/123 запросит метод User(int id) контроллера UsersController.

Как сделать, чтобы domain.com/user/123 выдал (2) действие? Учитывая что UserController в проекте не будет существовать?
  • Вопрос задан
  • 127 просмотров
Решения вопроса 2
@Free_ze
Пишу комментарии в комментарии, а не в ответы
routes.MapRoute(
    "UsersGeneric",
    "{action}/{id}",
    new { 
      controller = "Users",
      action = "User",
      id = UrlParameter.Optional
    },
    new[] { controller = "Users", id=@"\d+" },
    new[] { "Proj.Controllers" }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { 
        controller = "Home", 
        action = "Index", 
        id = UrlParameter.Optional 
    },
    new[] { "Proj.Controllers" }
);
Ответ написан
yarosroman
@yarosroman
C# the best
используйте атрибуты маршрутизации.

https://blogs.msdn.microsoft.com/webdev/2013/10/17...
metanit.com/sharp/mvc5/6.7.php

public class UsersController
{
    public ActionResult Index()
    {
    }

    [Route("user/{id:int}")]
    public ActionResult GetUserById(int id)
    {
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы