2013-04-24 2 views
0

URL을 라우팅하기 전에 조작 할 수 있습니까? 예를 들어, MVC가 내 경로 구성을 거쳐 사용할 경로를 찾으십시오.ASP.NET MVC에서 라우팅하기 전에 URL의 문자를 바꿉니다.

"www.test.com/ä/ö"와 같은 URL의 일부 문자를 "www.test.com/a/o"로 바꾸고 싶습니다. 그렇게하면 사용자가 URL에 해당 문자를 입력하면 올바른 경로가 계속 사용됩니다.

어쩌면 내가 URL을 조작하기 위해 연결할 수있는 것이 있을까요?

편집 : 내가 원하는 것을 명확히하기 위해 예제를 추가하겠습니다. "{controller}/{action}"과 같은 라우팅 구성이 있다고 가정 해 봅시다. 사용자는 www.test.com/MyCöntroller/MyÄction을 입력하고이를 컨트롤러 "MyController"와 동작 메소드 "MyAction"에 전달하려고합니다. 라우팅이 완료되기 전에 캐릭터 교체를해야합니다. 그렇지 않으면 일치하는 라우트가 발견되지 않습니다. 따라서 라우팅이 완료되기 전에 모든 "ö"를 "o"로, 모든 "ä"를 "a"(그리고 몇 개의 문자 이상)로 바꾸고 싶습니다. 이 일을 할 수있는 방법이 있습니까?

Edit2가 : 그것은 ASP.NET MVC의 URL을 얻을 처음이다 UrlRoutingModule이 같은 몇 가지 조사 후 보인다. 어쩌면 거기에 연결할 수있는 방법이 있을까요?

+0

가능한 중복 [어떻게 경로 값이 그 경로로 리디렉션 변경할 수 있습니까?] (http://stackoverflow.com/questions/3763398/how-can-i-change- a-route-value-then-redirect-to-the-route) – cadrell0

답변

0

this question에 대한 답변을 확인하십시오.

기본적으로 을 IActionFilter으로 사용하고 경로를 처리하는 ActionResult에 주석을 적용하려고합니다. 이렇게하면 경로 구성에 의해 처리되기 전에 URL을 조작하는 중개 방법이 있습니다.

+0

액션 필터에 대한 경험이별로 없지만 도움이 될 것이라고 생각하지 않습니다. 액션 필터를 올바르게 이해하면 액션 메서드 자체가 실행되기 전이나 후에 실행됩니다. 내가 원하는 것은 컨트롤러와 액션 메소드가 (라우팅 설정에 의해) 선택되기 전에 url을 조작하는 것이다. – haagel

1

post에서 전리품을 가져 와서 주문형 경로 처리기를 만들 수 있습니다.

using System.Web.Routing; 
namespace My.Services 
{ 
    public class MyRouteHander : IRouteHandler 
    { 
    ApplicationDbContext Db = new ApplicationDbContext(); 
    public IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
     // Get route data values 
     var routeData = requestContext.RouteData; 
     var action = routeData.GetRequiredString("action"); 
     var controller = routeData.GetRequiredString("controller"); 

     //modify your action name here 

      requestContext.RouteData.Values["action"] = actionName; 
      requestContext.RouteData.Values["controller"] = "SpecialController"; 

     return new MvcHandler(requestContext); 
    } 
} 

}의

관련 문제