Как перенаправить с URL в MVC5

У меня есть URL, который говорит www.test.com/12345. Когда пользователь нажимает этот URL, он должен быть перенаправлен на соответствующий метод действия, где "12345" принимает в качестве его параметра.

У меня есть небольшая идея, которую можно использовать с RouteConfig, но пока нет четкой картины.

Может ли кто-нибудь помочь мне в этом, пожалуйста?

Метод действия

[HttpPost]
public ActionResult DetailsByCode(string code)
{    
     IEnumerable<IProductListDto> prdctListDto = _productListDetails.GetProductListByCode(accessCode);
     Return "success";
}

а routeconfig это

routes.MapRoute(
     name: "Accesscode",
     url: "{Areas}/{controller}/{action}/{id}",
     defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode", id = string.Empty }
 ); 

Мой полный routeconfig.cs

  public static void RegisterRoutes(RouteCollection routes)
    { 
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "DetailsByCodeRoute",
            url: "{Areas}/{controller}/{action}/{id}",
            defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode" }
          );

        routes.MapRoute(
            name: "Accesscode",
            url: "{Areas}/{controller}/{action}/{id}",
            defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode", id = string.Empty }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",                
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }               
        );

        routes.MapRoute(
            name: "ChangePassword",
            url: "{Areas}/{controller}/{action}/{id}",
            defaults: new { Areas = "User", controller = "User", action = "ChangePassword", id = string.Empty }
        );
        routes.MapRoute(
           name: "PasswordReset",
           url: "{Areas}/{controller}/{action}/{id}",
           defaults: new { Areas = "User", controller = "User", action = "PasswordReset", id = string.Empty }
       );

2 ответа

Решение

Вместо добавления нового маршрута я добавил одну строку в Routeconfig.cs, которая предназначена для включения маршрутизации атрибутов.

routes.MapMvcAttributeRoutes();

и одна строка перед методом действия

[Route("{accesscode:int}")]

В вашей ситуации вы можете использовать ограничения маршрута.

Например, прочитайте этот пост. http://www.c-sharpcorner.com/UploadFile/ff2f08/custom-route-constraints-in-Asp-Net-mvc-5/

Другие вопросы по тегам