2014-02-21 5 views
0

컨트롤러 및 액션 이름을 기반으로하지 않고 맞춤 URL을 표시하는 방법은 무엇입니까? 내가 코드에 언급 된 URL로 URL을 얻을뿐만 아니라 내가 404 오류 맞춤 URL 표시?

<li>@Html.RouteLink("Product Feature", "productfeature")</li> 

처럼

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

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

     routes.MapRoute(
     name: "productfeature", 
     url: "cn/pendrive/18-gb", 
     defaults: new { controller = "Product", action = "Feature", id = UrlParameter.Optional } 
     ); 
    } 
} 

내 링크 버튼의 모양처럼

내 라우팅 보인다.

http://localhost:9090/cn/pendrive/18-gb 

정적 URL은 어떻게 가나 요? 기본적으로 내 목표는 컨트롤러와 액션 이름을 URL에 표시하지 않는 것입니다.

+1

MVC는 위에서 아래로 각 경로를 확인하고 일치의 첫 번째를 선택합니다. 기본값을 맨 위에두면 다른 모든 경로를 무시하게되며,이 경우'cn '컨트롤러에서'pendrive' 액션을 찾고 값이 '18 -gb'인 매개 변수를 전달하려고 시도합니다. 존재하지 않습니다. –

+0

감사합니다. 기본 동작을 맨 아래로 이동하여 올바르게 작동합니다. –

답변

2

은 기본 일 전에 사용자 정의 경로를 넣어 :

public static void RegisterRoutes(RouteCollection routes) 
{ 

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
    name: "productfeature", 
    url: "cn/pendrive/18-gb", 
    defaults: new { controller = "Product", action = "Feature", id = UrlParameter.Optional } 
    ); 

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


} 
+0

감사합니다. 이제 올바르게 작동합니다. 첫 번째 MVC 응용 프로그램에서 작업. :-) –