ASP.NET MVC 3.0 Маршрутизация - PullRequest
       42

ASP.NET MVC 3.0 Маршрутизация

0 голосов
/ 02 сентября 2011

У меня есть блог контроллера

У меня есть действие Index() и Show(stirng id)

Index() отображение всех сообщений и Show(sting id) отображение одного сообщения

Я хочучтобы отобразить Blog/Show/id, чтобы ответить на Blog/id

Итак, я пошел на Global.asxc и сделал это:

routes.MapRouteLowercase(
                "Blog", 
                "Blog/{id}", 
                new { controller = "Blog", action = "Show", id = UrlParameter.Optional }
            );

Но это швы, которые не должны работать, может быть кто-то одинможет помочь?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Вы можете иметь следующие маршруты:

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

    routes.MapRoute(
        "Blog", 
        "Blog/{id}", 
        new { controller = "Blog", action = "Show" }
    );

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

Сейчас:

  • /Blog/123 отобразится на BlogController/Show(123) action
  • / и /Blog сопоставятся с BlogController/Index action
0 голосов
/ 02 сентября 2011

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

Убедитесь, что

routes.MapRouteLowercase(
                "Blog", 
                "Blog/{id}", 
                new { controller = "Blog", action = "Show", id = UrlParameter.Optional }
            );

ставится перед

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

в Global.asax RegisterRoutes

...