2012-01-25 6 views
1

사용자 지정 dnn 모듈을 만들었습니다. 모듈은 물론 별도의 어셈블리입니다. 모듈 프로젝트에서 나는 Images 폴더를 가지고 있습니다. 그리고 상대 경로로 이미지를 참조하는 데는 큰 문제가 있습니다. 시도했습니다.DotNetNuke에서 상대 경로가 포함 된 문제

background: url(~/Images/image01.png) 
background: url(~/MyCustomModule/Images/image01.png) 
background: url(~/DesktopModules/MyCustomModule/Images/image01.png) 
etc. 

아무 것도 작동하지 않습니다.

background: url(../../DesktopModules/MyCustomModule/Images/image01.png) 

하지만 내 프로덕션 서버에서 작동하지만 내 로컬 DNN의 소 instalation에 : 내가 좋아하는 뭔가를 쓸 때 작동 할 수 있도록 유일한 방법입니다. 이 폴더에서 이미지를 참조하는 적절한 방법이 있습니까?

답변

1

상위 예제에서 사용하는 링크는 일반적으로 CSS 파일에서 작동하지 않습니다. ~은 ASP.NET에서 특별히 처리하는 것으로 을 나타내며 응용 프로그램의 루트는입니다. 당신의 CSS 파일은 그것이 무엇인지 전혀 알지 못하며 문자 그대로 전달할 것입니다.

대신 상대 경로를 사용하는 대신 슬래시로 시작하는 루팅 된 경로를 사용할 수 있습니까? 어떤 파일이 어디에 영원히 올바른 :

background: url(/DesktopModules/MyCustomModule/Images/image01.png) 
background: url(/MyApplication/DesktopModules/MyCustomModule/Images/image01.png) 
background: url(/MyApp/Subdir/DesktopModules/MyCustomModule/Images/image01.png) 

그냥 URL에 대해 아무 것도 알지하지 않습니다

+0

입력 할 때 'background : url (/ DesktopMo dules/MyCustomModule/Images/image01.png) '제작시에는 작동하지만 로컬 dnn에서는 작동하지 않습니다. – 1110

0

CSS 파일 "웹 사이트의 루트"를 의미하는 선도적 인 /로 시작해야합니다 ~ 캐릭터. 경로는 해당 CSS 파일의 위치에 상대적이어야합니다.

8

CSS 파일에는 몇 가지 옵션이 있습니다. 하지만 만하지 않을 경우

background: url(/DesktopModules/MyModule/Images/MyImage.png); 

이것은 "하위 포털"또는 비 가상 디렉터리 설정에서 작동 뿌리 경로를 사용

.

최선의 선택 당신은 ... 그것은 CSS 파일 자체에 대한 URL의 상대를 확인하는 것입니다 할 수 있다면

그래서, 당신의 CSS는/DesktopModules/인 MyModule 당신 것 다음 사용자

background: url(Images/MyImage.png); 
에있는 경우

두 상황에서 모두 작동해야합니다.

4

이유 : 서버 이름이 없습니다. 로컬 컴퓨터에서 주소는 http://localhost/<servername>처럼 보이는 - 예를 들어, 내 브라우저가 나는 삽입하는 것을 선호 http://localhost/Images/image01.png or http://localhost/DesktopModules/MyCustomModule/Images/image01.png.

에서 이미지를 찾고 있기 때문에 로컬 컴퓨터에서 작동하지 않는 이유는 http://localhost/dnn6.

때문이다 코드에 내 CSS 및 기타 스크립트. 그렇게하면 서버 이름이 포함되며 프로덕션 및 개발 서버에서 모두 작동합니다.내 프로덕션 서버에

LiteralControl litScripts = new LiteralControl(); 
litScripts.Text +="<link href=\"" + this.TemplateSourceDirectory + 
"/CSS/Form.css\" rel=\"stylesheet\" type=\"text/css\" />"; 
Page.Header.Controls.Add(litScripts); 

는, URL은

<link href="/DesktopModules/MyCustomModule/CSS/Form.css" 
rel="stylesheet" type="text/css" /> 

모양 및 개발 서버에, 지금 Form.css는 다음과 같이 편집

<link href="/DNN6/DesktopModules/MyCustomModule/CSS/Form.css" rel="stylesheet" type="text/css" /> 

으로 삽입됩니다 ,

background: url(../Images/image01.png) 
관련 문제