DJ메탈짱™의 Free Style

[ASP.NET] Button Control 유용한 속성 (UseSubmitBehavior) 본문

일(job)/MS(Microsoft)

[ASP.NET] Button Control 유용한 속성 (UseSubmitBehavior)

뽀&쏭 2015. 11. 23. 12:16



1. aspx

<script type="text/javascript">
    function SaveCheck() {
       alert('Defalut Button Submit') ;
    }   
    function SaveCheck2() {
       alert('UseSubmitBehavior Button Not Submit') ;
    }    
</script>

 

<asp:Button ID="Button1" runat="server" Text="Default" />
<asp:Button ID="Button2" runat="server" UseSubmitBehavior="false" Text="UseSubmitBehavior" />

2. aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
    Button1.Attributes.Add("onclick", "return SaveCheck();");
    Button2.Attributes.Add("onclick", "return SaveCheck2();");
}

 

3. 결과

첫 번째 버튼 클릭시 'Defalut Button Submit' 메시지 출력후 submit 발생.

두 번째 버튼 클릭시 'UseSubmitBehavior Button Not Submit' 메시지 출력후 return false

 

3. 설명

첫 번째 버튼은 브라우저의 내장 폼 전송(submit) 메커니즘을 이용한다. 그러나 UseSubmitBehavior false이면 스크립트 함수인 '__doPostBack(...)' 를 호출해서 포스트백을 수행한다. 즉, UseSubmitBehavior의 값에 따라 Button 컨트롤의 랜더링된 태그는 다음과 같이 출력됩니다.

 

<input type="submit" name="Button1" value="Default" onclick="return SaveCheck();" id="Button1" />
<input type="button" name="Button2" value="UseSubmitBehavior" onclick="return SaveCheck2();__doPostBack('Button2','')" id="Button2" />

 

첫 번째 <input> 태그는 type이 submit이므로, 버튼이 선택되면 별도의 스크립트가 실행되지 않아도 브라우저에 의해 포스트백이 발생한다. 두 번째 <input> 태그는 type이 button이므로, 버튼이 눌렸을 때 스스로 포스트백을 일으키지 못하고 onclick 이벤트에 스크립트를 실행하는 코드가 있습니다.