2011-01-11 3 views
1

'#'기호가 포함 된 URL을 올바르게 라우팅하는 방법을 찾고 있습니다. 이러한 URL에 대해서는 기본적으로 #을 무시하고 싶습니다.MVC2 : # 기호가 포함 된 URL을 라우팅해야합니다.

예를 들어 상점/색인/#/{storeName}이 단일 매개 변수 (storeName)를 전달하는 상점 제어기의 색인 조치로 경로를 지정하길 원합니다.

문자열에서 리터럴 '#'과의 비교를 시도했지만 작동하지 않습니다.

routes.MapRoute("RemoveHash", "Store/Index/#/{storeName}", 
      new {controller = "Store", action = "Index", storeName = UrlParameter.Optional}); 

나는 또한이 경과 된 경우 난 그냥 #을 무시할 수 있다고 생각하고, 행동 (첫 번째 인 #) 2 개 매개 변수를 가진 시도 (동작 호출되지만 StoreName이 매개 변수는 전달되지 않습니다) (hacky i know) ...하지만이 경우 라우팅에 문제가있어 매개 변수가 아무 것도 전달되지 않습니다.

이상적인 MVC 라우팅 시스템을 사용하여이 작업을 처리 할 수 ​​있다면이 작업에 HttpHandler를 사용하지 않는 것이 좋습니다.

제안 사항?

답변

3

당신이하려는 것은 불가능합니다. 브라우저에서 서버에 요청을 보내면 ASP.NET MVC 응용 프로그램에서이 값을 얻을 수 없으므로 URL에서 # (해시) 기호를 따르는 모든 항목은 완전히 무시됩니다. 클라이언트 측 자바 스크립트 만이 값을 읽을 수 있으며 (window.location.hash) AJAX 요청과 일반 URL (예 : Store/Index/{storeName})을 사용하여 서버로 전달할 수 있습니다.

+0

응답 해 주셔서 감사합니다. 나는 그들이 원하는 것이 불가능하다는 것을 자바 스크립트 녀석들에게 말할 것입니다! – nixon

+0

아닙니다. 나는 당신을 믿지 않았지만, 바이올린을 사용하여 이것을 두 번 확인했으며, 브라우저를 떠나는 요청은 # 앞에 URL 만 가지고 있습니다. 다시 한번 감사드립니다. – nixon

+2

@nixon, FYI, HTTP 요청은'# '해시를 포함한 전체 URL을 보내야합니다. – CallMeLaNN

관련 문제