2012-01-30 3 views
2

저는 전통적인 ASP.NET Web Form을 사용합니다. .aspx.cs 페이지에서JavaScript에서 ASP.NET EventHandler 호출

<asp:Button ID="myButton" Runat="server" OnClick="myButton_Click" /> 

, 나는 다음과 같은 한 :

protected void myButton_Click(object sender, EventArgs e) 
{ 
    // Do Stuff 
} 

그러나, 이제 누군가가 멋진 자바 스크립트 프레임 워크를 사용하기로 결정했다 다음과 같이 우리는 정의 된 버튼을 가지고하는 데 사용됩니다. 본질적으로, 방금 가지고 있습니다 :

여기에서 서버에서 원래 방법을 실제로 어떻게 실행합니까? 나는 이것이 매우 기괴한 질문이라는 것을 알고있다. 나는 코드를 단순화하고 직접 수행하려고 노력하고있는 의사 소통을 시도합니다. 누군가 이걸 어떻게 할 수 있는지 말해 줄 수 있습니까?

정말 고마워요!

답변

0

이 시도 :

<input type="button" id="myButton" onclick="someJSFunction(); __doPostBack('myButton','OnClick');" /> 
7

당신은

__doPostBack('<%=myButton.ClientID%>','OnClick'); 

또는 약간 더 적은 오류가 발생하기 쉬운 사용 ASP.Net ClientScriptManager에 쓸 수

<%= Page.ClientScript.GetPostBackEventReference(myButton, String.Empty) %>; 

두 번째는 실제로 기록 __doSubmit 커버 아래에 있지만 당신을 위해 그것을 할 ASP.Net 프레임 워크를지고있다. 또한 첫 번째는 페이지를 다시 게시하지만 두 번째는 올바른 서버 측 이벤트를 트리거합니다. ASP.Net 아키텍처에 훨씬 더 잘 통합되어 있습니다. 어느 쪽이든 작동합니다.

이 최근 SO question

은 내가 할 수있는 것보다 훨씬 더 나은 모든 설명 (또는 오히려시 한) 당신의 버튼에 안 그 기능을 수행하는 실제 코드를하고있다 무엇 이건 모든

-1

첫째, 버튼 뒤의 코드; 단추 뒤에있는 코드로이라는 이라는 메서드에 있어야합니다. 단추의 이벤트 핸들러는 단추 이외의 다른 오브젝트에 의해 직접 사용되어서는 안됩니다. 그래서 버튼 핸들러가 다음과 같이 나타납니다

protected void Button1_Click(object sender, EventArgs e) 
{ 
    CallMyRealMethod(); 
} 

다음으로, SignalR을 확인하십시오. (http://signalr.net) SignalR (간단히 말해서)은 자바 스크립트에서 C# 메소드를 호출하고 C#에서 javascript 메소드를 호출 할 수있게합니다.

이 두 기술을 사용하면 코드를 훨씬 읽기 쉽고 유지 관리 할 수 ​​있습니다.

+0

누구든지 내 대답을 downvoted겠습니까 설명 이유를 설명해주세요? –

+0

downvoter가 아니라 먼저, 당신은 실제 질문에 답을하지 않습니다. 둘째, signalr은 완전히 무관합니다. 아래 답변을보십시오. –

관련 문제