아래와 같은 마스터페이지를 만들었다고 하자.
//...
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TITLE1</title>
<link href="common/common.css" rel="stylesheet" type="text/css" />
<script src="common/header.js" type="text/javascript"></script>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
//...
그리고 아래와 같은 디렉터리 구조를 가진다고 하자.
- Master.master
- Default.aspx
- common
- common.css
- common.js
- common.css
- subs
- Sub1.aspx
- Sub1.aspx
<head runat="server">
<link href="../common/common.css" rel="stylesheet" type="text/css" />
<script src="common/header.js" type="text/javascript"></script>
하지만 문제가 남아있다. 스크립트 태그의 src 속성은 변환해주지 않기 때문이다. 여기에는 Control.ResolveClientUrl메서드를 활용할 수 있다.
<script src="<%=ResolveClientUrl("header.js") %>" type="text/javascript"></script>
이렇게 변경하면 모든 링크가 상대경로로 바뀌어 있는 것을 볼 수 있을 것이다.
참고 ¶
- ASP.NET QuickStart Tutorials:Creating a Layout Using Master Pages의 URL Rebasing in a Master Page 섹션.
- ASP.NET/UrlRebasing