2016-10-03 4 views
1

mvc로 aspx 프로젝트를 업그레이드했습니다. 이제 일부 오래된 고객이 .aspx 페이지로 url을 호출하고 mvc 프로젝트에서 404 (발견되지 않음)를 얻고 있습니다.사용자 지정 aspx 페이지를 mvc 작업으로 리디렉션하는 방법

이제는 .aspx를 mvc 페이지로 리디렉션해야합니다.

올드 URL 내가 MVC의 라우팅 메커니즘을 통해 할 생각입니다

www.domain.com/{product_name} 

www.domain.com/bookshop/pc-58573-53-{product_name}.aspx 

새로운 URL. 한 번 이런 유형의 URL을 내 고객 지정 mvc 작업 호출해야합니다 및 문자열 매개 변수에 나는 pc-58573-53- {product_name} 얻을 것이다 .aspx

최소한으로이 작업을 수행하는 것이 가장 좋습니다. 암호.

+0

이 시도 대답 – bhargav

답변

1

그냥 경로로 작업을 정의 'bookshop/{pageName}'

여기에 경로 속성을 사용하여이 개 시나리오에 대한 예는 다음과 같습니다

이 경우, 원하지 않는이 URL 변경 :

[Route("bookshop/{pageName}")] 
public ActionResult MyAction(string pageName) 
{ 
    // add logic according to what you receive in pageName property 
    return View(); 
} 

또는 새 URL로 리디렉션하려는 경우 :

[Route("bookshop/{pageName}")] 
public ActionResult MyAction(string pageName) 
{ 
    // Create and use a method to ExtractProductNameFromPageName 
    string productName = ExtractProductNameFromPageName(pageName); 
    return Response.Redirect("~/" + productName); 
} 

여기서 'pageName' 매개 변수는 'bookshop/' 이전의 페이지 이름을 잡아야합니다.

는 경우에, 당신은, 경로 특성 매핑을 사용할 필요가 없습니다 RouteConfig.cs 파일의 RegisterRoutes 방법에 아래 코드를 추가합니다

// enable mapping of routes defined using Route attribute on specific actions. 
routes.MapMvcAttributeRoutes(); 
+0

을 위해 내가 한 @sachin 감사하지만 행동없이 점점 호출. 어디서나 경로를 정의해야합니까? – bhargav

+0

@sachin, 여기서 OP는 * 301 여러 페이지 리다이렉트 *를 필요로하기 때문에이 경우에는 작동하지 않을 것입니다. 그리고 속성 라우팅은 내가 아는만큼 스스로 할 수 없습니다! –

+0

@Div 그 점을 지적 해 주셔서 감사합니다. 해당 시나리오도 처리 할 수있는 답변이 업데이트되었습니다. – sachin

관련 문제