Asp.net метод mvc Details

#asp.net #asp.net-mvc #routing #asp.net-mvc-routing

#asp.net #asp.net-mvc #маршруты #asp.net-mvc-routing

Вопрос:

Я работаю над проектом, в котором я использовал маршрутизацию по умолчанию

 routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}/{name}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional, name = UrlParameter.Optional }  // Parameter defaults
        );
  

У меня есть пользовательский контроллер и такие методы, как Index, create и details

Я не хочу создавать ссылки, подобныеhttp://mysite/users/details/111/somename вместо этого я хочу создать http://mysite/users/111/somename как URL-адрес типа stackoverflow. Я знаю, что могу достичь, зарегистрировав маршрут, подобный этому (перед маршрутом по умолчанию)

 routes.MapRoute(
            "UsersDetails",                                              // Route name
            "Users/{id}/{name}",                           // URL with parameters
            new { controller = "Users", action = "Details", id = UrlParameter.Optional, name = UrlParameter.Optional }  // Parameter defaults
        );
  

но тогда все мои другие URL-адреса начинают создавать проблему. например, если у меня есть URL
http://somesite/users/registersuccess

Есть ли обходной путь для этой проблемы, или я должен зарегистрировать все URL-адреса.

С уважением

Parminder

Ответ №1:

Вам потребуется ограничение на ваш id параметр для ваших маршрутов:

 routes.MapRoute(
    "UsersDetails",
    "Users/{id}/{name}",
    new { controller = "Users", action = "Details", id = UrlParameter.Optional, name = UrlParameter.Optional }, 
    new { id="d " }
    );
  

Тогда ваши другие маршруты не будут затронуты.