.NET MVC 3 пытается заставить RedirectToAction следовать формату {controller} / {action} / {id} / {GUID} - PullRequest
1 голос
/ 11 июля 2011

Мне здесь не хватает чего-то очевидного.

Я бы хотел, чтобы все RedirectToAction следовали формату {controller} / {action} / {id} / {GUID} (например, http://www.mysite.com/report/edit/23/0975a566-983a-4414-962c-0ab1a921e89d

Global.asax.cs

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

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

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

}

Я использую следующее в контроллере:

return RedirectToAction("edit", "report", new { id = id, GUID = getGUIDFromId(id) });

Однако я просто получаю следующий результат:

http://www.mysite.com/report/edit/23?0975a566-983a-4414-962c-0ab1a921e89d

У меня был хороший поиск по этому вопросу, но я ничего не нашел об этой конкретной проблеме (возможно, потому что она очевидна).

Большое спасибо заранее

1 Ответ

4 голосов
/ 11 июля 2011

Просто измените порядок определений вашего маршрута:

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

    routes.MapRoute(
        "Custom",
        "{controller}/{action}/{id}/{GUID}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional, GUID = UrlParameter.Optional }
    );

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

Помните, что порядок, в котором вы определяете свои маршруты, важен, поскольку они оцениваются в том же порядке механизмом маршрутизации. Поэтому вы всегда должны размещать конкретные маршруты перед более общими.

...