2011-09-02 11 views
0

내가 가진 컨트롤러 블로그ASP.NET MVC 3.0 라우팅

나는 액션 Index() 모든 게시물을 표시 Show(stirng id)

Index()Show(sting id) 표시

내가 Blog/id

에 responce하는 Blog/Show/id를 매핑 할 하나의 게시물을

그래서 Global.asxc에 가서 그 일을했습니다 :

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

하지만 솔기가 작용하지 않아 일부 도움이 될 수 있습니까?

답변

1

다음과 같은 경로 수 : 이제

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 } 
    ); 
} 

:

  • //BlogBlogController/Index 행동에 매핑됩니다

    • /Blog/123BlogController/Show(123) 행동에 매핑됩니다
  • +0

    이미'default' 경로'routes.MapRouteLowercase (기본값 ","이 Global.asax에 RegisterRoutes에

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

    앞에 위치되어 있는지 확인 {컨트롤러}/{id} = {UrlParameter.Optional}); – jason

    +0

    @jason을 올바른 순서로 입력하면 모든 것이 작동합니다. 'MapRouteL owercase'? ASP.NET MVC 표준이 아닙니다. 네가 쓴 게있어? 이름이 주어지면 모든 경로가 소문자 여야한다고 의심되므로'Blog/id'를 가질 수 없으므로'blog/id'가 필요할 수 있습니다. –

    +1

    내가 몇 가지 변경 사항을 수행하고 여기에 다른 질문을 게시 http://stackoverflow.com/questions/7283622/asp-net-mvc-3-0-routing-behaviour 당신이 볼 수 있습니다, 내가 사용하지 않기로 결정 쇼 () action 그러나 약간의 문제가 생기면 – jason

    0

    작성하려는 새 라우트가 처음 등록 된 새 라우트 여야합니다. 그렇지 않으면 기본 라우팅이 시작되어 요청을 처리합니다.

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