2009-04-07 4 views
1

가상 디렉터리에서 MVC 응용 프로그램을 실행할 때 마스터 페이지에 대한 올바른 디자인 타임 지원을 얻는 가장 좋은 방법은 무엇입니까? 마스터 페이지에서 다음 이미지 태그 주어진 예를 들어가상 디렉터리에서 실행할 때 MVC 마스터 페이지 디자인 타임 지원

:

<img src="../../Content/Images/myimage.jpg" alt="image" /> 

이 마스터 페이지와 마스터 페이지를 사용하는 모든 뷰, 전체 설계 시간 지원을 제공 하겠지만에서 응용 프로그램을 실행할 때 http://localhost/MyApp/, 물론 이미지를 찾을 수 없습니다 (브라우저가 http://localhost/Content/Images/Banner.png을 찾고 있습니다). 런타임 디스플레이가 해결됩니다

<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" /> 

하지만, 마스터 페이지 및 뷰에서 휴식 설계 시간 지원 :

에 이미지를 변경.

<img runat="server" src="../../Content/Images/myimage.jpg" alt="image" /> 

이 두 런타임 및 디자인 시간을 작동하지만 RUNAT를 지정할 필요 = "서버"의 일종처럼 보인다

세 번째 옵션은 다음과 같이 = 서버를 RUNAT하는 이미지 태그를 변경하는 것입니다 해킹처럼.

더 나은 방법이 있나요?

편집 : 옵션 cagdas이 아닌 런타임에, 디자인 타임에 작동 제안 :

<img src="/Content/Images/myimage.jpg" alt="image" /> 

답변

1

false 해킹으로 디자인 타임 지원이 필요한 경우 두 가지 방법을 결합 할 수 있습니다. 이 방법은 runat = "server"메소드보다 더 많은 해킹 방법이지만, 몇 가지 경우에 유용합니다. 이 메서드는 css 클래스 intellisense 및 jQuery vsdoc 파일에 사용됩니다.

<% // design-time use only %> 
<% if (false) { %> 
<img src="../../Content/Images/myimage.jpg" alt="image" /> 
<% } %> 
<% // run-time %> 
<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" /> 
0

내용 폴더는 응용 프로그램의 루트에 (그리고 그 이후로 나는 그것이 가정하면 기본값). 당신은 이것을 할 수 있습니다 :

<img src="/Content/Images/myimage.jpg" alt="image" /> 

어떤 응용 프로그램의 루트에있는 콘텐츠 폴더를 찾습니다. 당신이 말한

<img src="<%=Url.Content("~/Content/Images/myimage.jpg")%>" alt="image" /> 

..하지만처럼, 늘 당신이 지원을 설계 제공 :

0

는 내가 두 번째 예제를 사용하는 것을 선호합니다. 나는 MVC 환경에서 VS 디자이너를 사용해야한다고 주장한다. 나는 단순히 VS에서 실행되는 dev 서버를 유지하고 VS 옆에있는 내 fav 브라우저에서 내 페이지를 열어 봅니다. 이것은 디자인보기보다 낫습니다. 실제 브라우저입니다.

게다가 어떤 이미지를 디자이너에 표시하기 위해 Url.Content 메서드를 사용하는 좋은 디자인 아이디어를 희생하고 싶지 않습니다. 어디서나 Url.Content을 사용하여 일관된 접근 방식을 유지하면 장기적으로 더 많은 도움이 될 것입니다.

관련 문제