2014-09-29 4 views
0

레이블의 텍스트를 사용자 지정 이벤트에서 변경하려고합니다. 버튼 클릭 이벤트 (Button1_Click)를 통해 텍스트를 업데이트하면 모든 것이 작동합니다. 그러나 사용자 지정 이벤트 (ArReceiver_OnArDataUpdate)에서 동일한 레이블을 업데이트하려고하면 아무 일도 발생하지 않습니다. ArReceiver_OnArDataUpdate가 올바르게 실행 중입니다.ASP.NET 사용자 지정 이벤트의 레이블 텍스트 변경

내 이벤트가 버튼 클릭 이벤트와 다르게 반응하는 이유는 무엇입니까? 내 이벤트가 작동하려면 무엇을해야합니까?

이것은 VS2013의 기본 웹 프로젝트입니다. 여기에서 설명하는 코드는 더 나은 :

코드 뒤에 :

namespace WinReceiver 
{ 
    public partial class _Default : Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      ArReceiver.OnArDataUpdate += ArReceiver_OnArDataUpdate; 
     } 

     void ArReceiver_OnArDataUpdate(object sender, ArEventArgs e) 
     { 

      labelVoltage.Text = "Reset"; 
      UpdatePanel1.Update(); 
     } 

     protected void Button1_Click(object sender, EventArgs e) 
     { 
      labelVoltage.Text = "Button Clicked"; 
      UpdatePanel1.Update(); 
     } 

    } 
} 

을 Default.aspx :합니다 (site.master은 기본적으로 그 안에 스크립트 관리자가 있습니다)

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:Label ID="labelVoltage" runat="server" Text="..."></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 

편집 : 내가 한 this question이 가능하지 않다고 말하지만 누군가가 왜 이것이 가능하지 않을 수 있는지 설명 할 수 있습니까? 나도 페이지 새로 고침과 함께 괜찮아요,하지만 Respone.Redirect 시도했을 때 예외가있어.

+0

click 이벤트는 다시 게시를 발생시키기 때문에 click 이벤트로 인해 단추 레이블이 변경됩니다. 문제의 이벤트는이 작업을 수행하지 않습니다 (이 이벤트에 익숙하지 않은 것으로 추측됩니다). signalR, AJAX long polling 또는 다른 기술을 사용하여 서버 이벤트를 클라이언트로 업데이트 할 수는 있지만, 귀하의 솔루션이 너무 단순하여 예상대로 작동하지 않는다고 생각합니다. – SpaceBison

답변

1

OnArDataUpdate가 정적 이벤트 인 경우 ASP.NET 페이지 렌더링 프로세스가 범위를 벗어나면 처리 할 페이지의 범위에 있지 않기 때문에 레이블이 존재하지 않을 때 발생합니다 (이후 ASP.NET은 상태 비 저장).

그러나 ArReceiver가 페이지의 컨트롤 인 경우 처리가 잘되어야하며 문제가 컨트롤이나 무언가를 덮어 쓸 수 있습니다 (이벤트가 발생할 때마다 viewstate에 의해 무시 될 수 있음).

+0

이것은 매우 오래된 것이지만 귀하의 지시가 맞습니다. 나는 webforms이 어떻게 작동했는지에 대해 매우 가난한 개념을 가지고 있었지만, 그 후에 알아 냈습니다. –

관련 문제