2011-03-12 5 views
1

RouteValue 항목으로 URL을 보내고 GetVirtualPath에 매개 변수를 지정하는 데 문제가 있습니다.라우팅 RouteValueDictionary 두 번째 항목의 URL로 URL

var parameters = new RouteValueDictionary { 
     { CommonUrl.UrlParameters.AnyString, "ItISAnyString"}, 
     {CommonUrl.UrlParameters.ReturnUrl, "test/myPage/Index"} 
    }; 

그리고이 매개 변수를 사용하여 URL을 얻을 :

RouteTable.Routes.GetVirtualPath(null, anyRouteName, **parameters**).VirtualPath 

그래서 나는이 페이지와 슬픈 (404) 을 인식 haven`t URL http://localhost/ItISAnyString/테스트/내 페이지가/지수와 같은

시스템을 얻을 하지만 수동으로 이런 일을한다면
http://localhost/ItISAnyString/테스트 $ myPage $ 인덱스 모두 정상적으로 작동합니다. 이 문제를 해결하려면 더 나은 방법이 있어야한다고 생각합니다.

편집

나는 두 번째 매개 변수 undestend이 노선 돈 t exist any RouteValueDictionary. I think that routing don톤 더 하나 '/'기호가 있으면 것을 발견했다. 그래서 나는 그것을 만들고 무슨 일이 일어날지를 볼 것입니다.

내가 매개 변수로 보낼 때 URL을 인코딩해야한다는 편집

내 대학 슬픈. 좋아, 해냈어. 하지만 지금은 400 오류가 있습니다. 그것은 나를 위해 조금 이상합니다.

답변

0

매핑 패턴에 문제가 있습니다. 방금 ​​{*} 패턴을 경로 맵에 추가했습니다. 이제 내 Global.asax에 코드 :

이 개념 이름 http://msdn.microsoft.com/en-us/library/cc668201.aspx

"URL 패턴에 세그먼트의 변수 번호 처리"됩니다
routes.MapPageRoute(RouteName.Security.TestOne, 
              Test, 
              "~/Web/Pages/Test/test.aspx", true); 

    public static string Test = String.Format("{0}/{1}/{2}/{3}", 
                      "Test", 
                      "Testconfirm", 
                      "{" + CommonUrl.UrlParameters.FirstParam+ "}", 
                      "{*****" + CommonUrl.UrlParameters.Url + "}");