문제

ASP.NET 응용 프로그램이 원래 2.0.50727을 사용하여 Windows 2008 서버에서 사용중인 Windows 2000 서버의 .NET 1.1 프레임 워크에 배포되었습니다. 우리는 Tilde (~)를 사용하여 응용 프로그램의 많은 영역에서 절대 경로로 해결되며 ASP : HyperLink Controls (Run-AT 서버 태그 포함)와 같은 것들에 대해서는 HyperLinkColumn을 사용하여 생성하는 바운드 데이터 그라이드 컨트롤에 대해 작동합니다. 데이터베이스에서 반환 된 ID 값을 기반으로 한 링크는 Tilde가 페이지에 기록됩니다.

이 코드 :

HyperLinkColumn oLink = new HyperLinkColumn();
oLink.DataNavigateUrlField = "IdField";
oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";

이것을 페이지에 버리고 있습니다.

<a href="~/Here171201.aspx">

IIS 또는 .NET 프레임 워크의 버전간에 변경된 점은이 기능이 더 이상 작동하지 않도록 할 수 있습니까? Tilde는 1.1에서 확실히 해결되었습니다. 조직의 12 개의 1.1 프레임 워크 서버에 동일한 코드를 배포했습니다. 불행히도, datanavigateUrlFormatString을 설정하는 클래스는 페이지에 액세스 할 수 없으므로 Page를 삽입하려면 약간의 kludging을 수행해야합니다.

도움이 되었습니까?

해결책

나는 변화하는 것을 알지 못하지만 HyperLinkColumns를 사용하지 않으므로 (템플릿 열이 제공하는 컨트롤을 선호합니다) 변경 사항을 찾지 못했습니다.

속담 밴드 원조로서의 한 가지 가능성은이 라인을 변경하는 것입니다.

oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";

이에:

oLink.DataNavigateUrlFormatString = Page.ResolveUrl("~/Here{0}.aspx"); 

메모리가 제공되면 마스터 페이지에 가서 사용자 컨트롤에서 '~'를 사용할 때 몇 가지 문제가 있었지만 그런 것을 읽은 지 오래되었습니다.

다른 팁

Datagrid의 HyperLinkColumn이 자동으로 URL을 절대 경로로 해결한다고 생각하지 않습니다. iirc, the DataNavigateUrlFormatString 재산 내부 전화 String.Format() 제공된 형식에서만. .NET 1.1에서 올바르게 작동 했습니까? IIRC, .NET 1.1에는 tilde 기반 자동 URL 해상도가 없었습니다.

제 생각에는 Stephen이 제시 한 솔루션을 사용해야합니다 (전화 Page.ResolveUrl 수동으로.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top