2011-09-25 2 views
2

http://myhost/MyController/DoSomething/Anything%252fAnything는 잘못된 요청입니다.URL에 슬래시를 인코딩 할 수 없습니다.

http://myhost/MyController/DoSomething/Anything%2fAnythinghttp://myhost/MyController/DoSomething/Anything/Anything와 같습니다.

어떤 URL이 "Anything/Anything" 문자열을 내 컨트롤러로 보냅니 까?

해당 URL을 생성하도록 Html.ActionLink을 만드는 방법은 무엇입니까?

편집 : 또한 "Anything/Anything/Anything/Anything....../Anything" 처리 할 수 ​​있어야합니다.

MVC 3 사용하고 있습니다.

+0

어떻게 호출하는 HTTP에 다른 경로를 정의하기 전에 넣어 : // myhost/MyController/DoSomething/뭐든지 % 252fAnything? – jzm

+0

나는 myhost/MyController/DoSomething/Anything/Anything을 호출하고 있지만 라우팅 시스템을 잃어 버려서 % 252f 및 % 2f로 슬래시를 인코딩하려고했지만 작동하지 않습니다. – Eduardo

+0

네,하지만 어떻게 부르십니까? 당신의 견해에 도움이 될까요? 그렇다면 코드를 게시 할 수 있습니까? – jzm

답변

2

당신이 변수 아이폰에 경로를 정의하는 경로를 정의하려면, 당신은 정의의 이런 종류의 사용할 수 있습니다

routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", 
new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

global.asax.cs

0

사용하고 "Anything/Anything/Anything/Anything....../Anything" 또한

을 처리 할 수 ​​있어야합니다. 그래서 같은

url = [controller]/[action]/[id1]/[id2] 

post

를 참조하거나 기본값으로 처리하는 것이 가능하다

http://myhost/MyController/DoSomething/Anything?id2=Anything 

과 같은 URL을 사용하여 라우팅 규칙을 추가 -하지만이 경우, 다른 경로에 대한 규칙은 컨트롤러/액션 이름과 명시 적으로 일치하지 않아야합니다. 그렇지 않으면 이전 규칙이 적용됩니다.

전체 URL을 시스템 var에서 사용할 수있는 일 수도 있습니다. 컨트롤러가 전혀 호출되지 않았습니까?

+0

안녕하세요. 내 컨트롤러가 호출되지 않습니다. 나의 실제 경로는 "Announce-Job-For- {seo_friendly_category_name}/{category_id}"와 같습니다. ActionLink는 seo_friendly_category_name에 슬래시가 있지만 컨트롤러가 전혀 호출되지 않은 경우에도 링크를 생성 할 수 있습니다. 그래서 나는 슬래시를 인코딩하려고합니다. – Eduardo

+0

수신 URL과 일치하는 라우트가 없기 때문에 컨트롤러가 호출되지 않습니다. 나가는 링크 생성은 별도입니다. url에 맞는 경로를 추가하면 컨트롤러가 호출됩니다. 경로 정의의 순서가 중요하다는 것을 기억하십시오. –

+0

일치합니다. 그렇지 않다면 ActionLink는 서 친절 링크를 생성하지 않습니다. – Eduardo

관련 문제