2009-03-09 6 views
2

나는 현재 HyperLink 컨트롤의 NavigateUrl 속성에 (동적으로) 전달 된 파일 경로를 처리하는 방법을 알아내는 데 어려움을 겪고 있습니다.ASP.NET의 HyperLink.NavigateUrl에서 특수 문자를 다루는 방법?

의 루트에서 jäynä.txt이라는 파일을 참조하려고한다고 가정 해 봅시다.
"file:///C:/jäynä.txt" 결과는 file:///C:/jäynä.txt으로 연결되며, 결과는 HttpUtility.UrlPathEncode("file:///C:/jäynä.txt")입니다. 문자열 "file:///C:/j%E4yn%E4.txt"를 제공 ** %E4, 함께 ä **의 교체

, file:///C:/jäynä.txt에 일 연결을 준다,하지만 난 그것을 자신을 정의하지 않고 교체 할 수있는 방법을 찾을 수 없어. 예를 들어, Replace("ä", "%E4").

HyperLink이 문자열에서 바꿀 문자를 수동으로 나열하지 않고 파일 경로 문자열을 자동으로 처리하여 올바르게 표시 할 수 있습니까?

추가 참고 :
디버깅이 HyperLink 적어도 문자열 "file:///C:/jäynä.txt" 변경을 절약 할 수 있음을 보여 주지만, 어떻게 든 그것을 엉망으로하기 때문에, 페이지가 렌더링되는 문자 인코딩을 spesifying에 의해이 문제를 해결하는 방법이있을 수 있습니다 렌더링 시간 전후.
그러나이 만하여 NavigateUrl 때문에 다른 구성 요소의 렌더링의 경우뿐만 아니라이 될 것 같다 HyperLinkText -property ä 변경 문자를 렌더링의 모든 확실히 할 수있다.

답변

1

이것은 브라우저가 경로 해석을 시작하는 방법에 기인합니다. 일반적으로 개인은 페이지 URL에서와 같은 문자 사용을 피합니다.

귀하의 경우, HttpUtility 및/또는 NavigateUrl 속성의 동작을 변경하는 방법을 알지 못해서 최선의 시나리오에 부딪 혔습니다. 최소한 사용자 지정 컨트롤을 만들지 않고는

+0

아니요, 브라우저라고 생각하지 않습니다. href = "file : /// C : /j%c3%a4yn%c3%a4.txt", 이는 서버가 렌더링 한 방법을 제안합니다. 첫 번째 장소. 당신은 어려운 해결책에 바로 있을지도 모릅니다. – vipirtti

+0

간접적으로 BrowserCaps 또는 브라우저와 유사한 시스템을 기반으로하는 브라우저 일 수 있습니다. 그럼에도 NavigateUrl에 지정한 값은 미리 정리해야합니다. 그것은 UrlEncode와 함께 자동으로 아무것도하지 않기 때문에 문서화되어 있습니다. –

1

HyperLink 컨트롤을 사용하지 마십시오. 대신 HtmlAnchor 컨트롤을 사용하십시오. 그것은 당신의 문제를 해결할 것입니다. 나는 왜 마이크로 소프트가 이런 식으로 설계했는지 모른다.

4

하이퍼 링크의 NavigateUrl 속성은 URL의 유니 코드 문자를 인코딩합니다.

대신이 같은 하이퍼 링크의 href 속성의 속성을 설정할 수 있습니다 :

hyperlink1.Attribute("href") = "file:///C:/jäynä.txt" 
+0

올바른 구문은 다음과 같습니다. 'hyperlink1.Attributes [ "href"] = "file : /// C : /jäynä.txt" –

+1

vb.net을 사용하는 경우 중괄호를 사용할 수 있습니다. –

0

감사합니다! '속성'을 사용하는 게시물이 내 문제를 해결했습니다. 검색은 몇 가지 매우 복잡한 방법을 제공합니다 - 내 경우는

HyperLink6.Attributes["href"] = "http://høgstedt.danquah.dk/"; 

의 URL에 특수 덴마크어 문자를 사용하는 문제

프로그래머 많이 고생 한 것이었다. 이것은 간단하고 간단합니다. 다시 한 번 고맙습니다.

+1

감사하다 말해요. 단지 의견 만 있으면 충분합니다. 그리고 upvote 더 많은 감사합니다 – Steve