일반적인 링크의 경우, runat="server"속성을 붙여주면 마스터페이지의 경로에 따라 페이지 경로가 자동 재지정된다.
<a href="Default.aspx" runat="server">home</a>
object 요소에 포함된 param 요소의 value값이나 embed 요소의 src 속성 등 runat="server"로 변환이 안 되는 경우에는
Control.ResolveClientUrl(http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveclienturl.aspx)메서드를 활용하면 된다.
자바스크립트 JS 파일에 포함된 링크의 경우에는, 페이지의 현재 위치를 나타내는 변수를 지정하여 활용하면 된다.
- 헤더의 내용 :
<script type="text/javascript">
var siteRoot = "<%=ResolveClientUrl("./") %>";
</script>
<script src="<%=ResolveClientUrl("common/flash.js")%>" type="text/javascript"></script>
- js파일의 내용 :
function goToSub1() {
location.href =siteRoot+"sub/Sub1.aspx";
}
최상위 페이지가 하나밖에 없을 경우 자바스크립트만으로 처리하는 방법도 있다. 그러나 이 방법은 유연하지 못해 쓰지 않는 것이 좋을 것 같다.
if (document.URL.indexOf("Default.aspx") == -1) {
siteRoot= "../";
} else {
siteRoot= "";
}
function goToSub1() {
location.href =siteRoot+"sub/Sub1.aspx";
}