2010-06-16 3 views
0

ASP.NET 4.0 라우팅 문제 내가 말한 것처럼 Page.RouteData.Values ​​링크ASP.NET 4.0 라우팅 + 아약스 + 브라우저 역사는

System.Web.Routing.RouteTable.Routes.MapPageRoute("ProjectViewRoute1", 
"project/{title}/{idProject}#{idDesign}", "~/ProjectView.aspx"); 

에서 # 문자 후 4. 기본값을 포함하지 않는다는 것입니다 의 Page.RouteData.Values.ContainsKey("idDesign") 내가 일부 콘텐츠를 숨기고있는 다른 페이지를로드와 같은 사용자의 눈에 새로운, 느릅 나무를로드하는 자바 스크립트와 Ajax를 사용하기 때문에이 기능을 활용하려는 이유는 false

를 반환 할 것 그는 URL을 복사하여 나중에 복사 할 수 있어야합니다.

질문 : RoutedData에서 {idDesign}을 얻는 방법은 무엇입니까?

답변

2

브라우저에서 서버의 URL에 #을 입력 한 후 브라우저에서 데이터를 보내지 않습니다. 결과적으로 ASP.Net이 해당 데이터를 캡처하여 제공 할 수 없습니다.

# 대신 # 대신 유용한 기능을 사용하고 필요한 경우 AJAX가 만든 서버에 보낼 URL의 해시 섹션에 배치 된 데이터를 캡처하는 AJAX 호출을 포함하는 것이 좋습니다 urls. jQuery를 사용

:

$(function() { 
    if (location.hash) { 
     hash = location.hash.substr(1); 
     location.hash = null; 
     location.search = hash; 
    } 
}); 
+0

나는를 사용합니다 경우? 문자 내 페이지가 새로 고쳐지고 서버에서 다시로드됩니다. 자바 스크립트에서 URL을 다음과 같이 설정하면 window.location = http://example.com//page/subpage#idDesign 내 페이지가 새로 고쳐지지 않으며 아약스를 사용하여 새 페이지를 쉽게로드 할 수 있습니다. 문제는 서버에서 # 문자 다음의 문자열을 다시 얻는 것입니다. 나는 이것이 어쩌면 할 수 있다는 것을 알고있다. 페이스 북은 ASP.NET Ajax를 사용하는 ASP.NET과 seo URL도 지원합니다. –

+0

맞아, 페이스 북은 그 후에 모든 것을 대체하는 빠른 URL 재 작성을함으로써 그것을 하는가? # 이후의 모든 것 - 내 답변의 두 번째 부분에서 내가 추천 한 것입니다. 필요한 경우 소스를 제공 할 수 있습니다. –

+0

나는 다른 프로젝트에서 사용 했으므로 앞으로 나아가서 소스를 제공했다. –