2012-04-07 3 views
2

안녕하세요. asp.net에서 버튼 클릭에 대한 의구심을 가지고 있습니다. 버튼 컨트롤을 OnClick 이벤트와 같이 배치하고 .aspx 페이지의 다른 컨트롤 (버튼, 텍스트 상자)을 배치했습니다. 페이지를 실행하면 버튼이 여기에있는 브라우저의 페이지 소스에 표시되고 onclick 이벤트가 표시되지 않습니다. 그런 다음 페이지에서 버튼을 서버 측에서 클릭하는 방법, 서버 측에서 어떤 버튼이 전송을 유발하는지 식별하는 방법 ,이 페이지가 서버 측으로 어떻게 이동하는지에 대한 정보를 제공합니다.서버 측에서 버튼 클릭 이벤트를 식별하는 방법

+1

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.usesubmitbehavior.aspx ... http://stackoverflow.com/a/4635993/284240 –

답변

13

<asp:Button />이면이 컨트롤은 기본적으로 브라우저의 기본 메커니즘을 사용하여 양식을 전송하는 type = "submit"의 입력을 렌더링합니다. ASP .Net은 게시 된 값을 확인하여 클릭 한 단추를 식별합니다. 브라우저가 양식을 제출하면 다른 제출 입력을 제외하고 다른 입력의 이름 및 값과 함께 클릭 된 버튼의 이름 및 값을 POST 요청에 기록합니다. 따라서 단일 제출 입력의 이름이 서버로 전송되고 ASP .Net은 어떤 버튼이 클릭되었는지 확인합니다.

이 서버 제어 속성을 또한 UseSubmitBehavior을 가지며이 거짓으로 설정되어있는 경우에는 입력 버튼의 입력을 생성한다. 버튼 양식을 제출하지 않기 때문에, ASP 닷넷은 작업

<script type="text/javascript">  
//<![CDATA[  
var theForm = document.forms['form1'];  
if (!theForm) {  
    theForm = document.form1;  
} 

function __doPostBack(eventTarget, eventArgument) {  
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {  
     theForm.__EVENTTARGET.value = eventTarget;  
     theForm.__EVENTARGUMENT.value = eventArgument;  
     theForm.submit();  
    }  
}  
//]]>  
</script> 

공지 사항 _ 의 EventTarget _EVENTARGUMENT 필드를 할 몇 가지 자바 스크립트를 생성합니다. 이 필드는 ASP .Net이 클라이언트에서 클릭 한 단추를 알 수 있도록 설정됩니다.

<input type="button" 
     name="rptMain$ctl02$DeleteButton" 
     value="Delete" onclick="__doPostBack('rptMain$ctl02$DeleteButton','')"   
     id="rptMain_ctl02_DeleteButton" /> 

__doPostBack 함수에 인수가 전달됩니다. 입력의 이름이 전달되고 EVENTTARGET으로 설정됩니다. EVENTTARGET의 값은 ASP .Net에서 읽을 수 있으며 <asp:Button /> 컨트롤의 Click 이벤트를 발생시킵니다.

EVENTARGUMENT는 일반적으로 DataBound 컨트롤에 배치되며 해당 작업에 대한 구체적인 데이터가 들어있는 ItemCommand 이벤트에 사용됩니다. 나중에 이벤트를 처리 할 때 사용하십시오. 이 데이터는 예를 들어 데이터베이스 테이블의 행 ID 일 수 있습니다.

+2

대답의 종류는 내가 스택 오버플로로 돌아 오는 것을 막아주는 것입니다. 상세하고 정교하고 유익한. 나는 새로운 것을 배웠다. +1. –

+0

usesubmitbehaviour가 true로 설정된 경우 회신 해 주셔서 감사합니다. 버튼 컨트롤 이벤트가 호출되는 방법 – Karthick

+0

입력 유형 입력을 생성합니다 (기본 동작) –

2

ASP.NET 웹 양식에서 모든 단추가 전체 양식을 서버에 제출합니다. 웹 양식 엔진은 클릭 된 단추를 확인하고 적절한 이벤트 핸들러를 호출합니다.

0

컨트롤의 onclick 특성을 지정하면이 같은 클라이언트에 전달되지 않습니다. 이벤트가 발생할 때

myControl.Click += new EventHandler(specifiedMethod); 

그래서, 그것은 전화를하는 방법을 알고 : 그것은

대안은 다음과 같은 형태 영문 파일을 구문 분석 할 때 대신, 그것은 단지 IIS의 배선을 지정합니다.

관련 문제