2013-12-23 3 views
4

Microsoft.AspNet.FriendlyUrls를 사용하는 ASP.NET C# WebForms에서 라우팅이 작동하지만 모든 페이지에 대해 이 아닌이 있습니다. Page.RouteData에는 values.count가 없는지를 Page_Load에서 상술 한 페이지 (List.aspx)에서Page.RouteData.Values는 한 페이지에서는 비어 있지만 다른 페이지에서는 비어 있습니다.

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx"); 

: 여기

는 일례이다.

Page.RouteData.Values.Count == 0 

나는 그것에 일치하는이 정보와 같은 사이트의 다른 페이지가 :

routes.MapPageRoute("{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "{Location}/{ZipCode}/{Name}/{LocID}/{ID}/{Code}/", "~/place.aspx"); 

이 페이지 (place.aspx)는 항상 경로의 정확한 수를 보여줍니다.

디버그 모드의 목록 페이지에서 쿼리 문자열과 위치를 확인하고 ZipCode가있는 동안.

Page.RouteData가 한 페이지에 표시되지 않지만 다른 페이지에서 사용 가능하게되는 원인은 무엇입니까?

+0

이 문제는 계속 발생합니다. 나는 몇 달 전 querystring (YUK!)을 사용했다. 오늘 나는 시스템에서이 문제가 다시 발생하면서 Google에서 다른 검색을 수행하기로 결정했습니다. 나는이 스레드를 발견하고 그것을 "WOW 같은 문제를 생각하고 읽고 있었다!" 그 때 나는 보았다. 그리고 그것은 나의 지위였다! 문제에 대해 더 구체적으로 알 수 있을지 확실하지 않습니다. 저를 페이지로 보내는 링크를 클릭하면 작동하는 것처럼 보입니다. 하지만 page_load가 아닙니다. –

+0

이 다른 질문에 대한 내 대답을 참조하십시오. https://stackoverflow.com/a/46365650/14263 –

답변

8

나는 URL 라우팅에 꽤 새로운데, 나는 비슷한 문제에 부딪혔다. 그리고 해결책을 찾았다 고 생각한다. 당신은 시도 :

routes.MapPageRoute("ListDetails/{Location}/{ZipCode}/", "ListDetails/{Location}/{ZipCode}/", "~/List.aspx"); 

대신

routes.MapPageRoute("List/{Location}/{ZipCode}/", "List/{Location}/{ZipCode}/", "~/List.aspx"); 

의? 내 경우

내가했다 :

routes.MapPageRoute(
    "ImageDelete", 
    "Admin/Images/Delete/{nameToKill}", 
    "~/Admin/Images.aspx" 
); 

항상 빈 Page.RouteData.Values을 보였다있다. 내가

routes.MapPageRoute(
    "ImageDelete", 
    "Admin/Image/Delete/{nameToKill}", // mind the missing 's' 
    "~/Admin/Images.aspx" 
); 

로 변경하면

그것은했다!

경로가 실제로 존재하는 사이트의 URL로 시작되지 않을 수도 있습니다.

+2

와우, 도움이 될만한 자료를 보내 주셔서 감사합니다. https://msdn.microsoft.com/en-us /library/dd329551(v=vs.100).aspx – karlingen

관련 문제