본문 바로가기
Web/ASP.NET

[ASP.NET] Master page 적용시 id 값 전달 오류

by WooHey 2022. 10. 21.

개발을 하다가 발견한 오류인데 이걸로 하루종일 삽질을 했었다.

 

원래 html 페이지로 만들면 각 태그에 지정한 id값이 본인이 설정한 id 그대로 넘어가는데 asp.net에서 master page를 적용한 페이지에서는 id 값이 다르게 전달되는 현상을 발견했다.

 

말 보다 살짝 코드로 예를 들면

<html>
<head>
	<script>
    	if($("#btn1").onclick){
        	// 버튼 눌림 이벤트
        }
    </script>
</head>
<body>
	<button id = "btn1" type="button">
    	<span>확인 버튼</span>
    </button>
</body>
</html>

 

위 HTML 코드에서 script 태그 안의 if 문은 동작이 할 것이다. (문법적인 오류가 있을 수 있으나 대략적인 수도코드로 작성했음.)

 

하지만 asp.net에서 master page를 적용했을 땐 말이 달라진다.


layout.Master

. . .
<asp:Contentholder runat='server' ID='BODY'>
	<!-- 여기에 본문이 들어감 -->
</asp:Contentholder>
. . .

layout.Master 페이지를 적용한 .aspx 파일

<script type='text/javascript'>
	if($('#btn1').onclick){
    	// 버튼 눌림 이벤트
    }
</script>


<asp:Content id="BODY" runat='server'>
	. . .
    <button id='btn1' type='button'>
    	<span>버튼1</span>
    </button>
    . . .
</asp:Content>

 

간단하게 위 처럼 예를 들면 위 코드에서 script 태그 안의 if 문은 작동하지 않는다..

왜냐하면 하단에 asp 태그 안에서 분명 button 의 id 값을 btn1로 설정했지만 master page를 적용 함으로 인해 id값이 앞에 뭔가가 추가로 붙기 때문이다. 

 

이는 f12를 통해 직접 확인하면 이해가 잘 될 것이다.

 

우선 해결책으로 master page를 적용한 것들을 다시 롤백하고 진행하는 중이다.

이에 대한 자세한 내용이나 추가할 내용이 있으면 수정하겠다.