2010-12-22 2 views
2

버튼이있는 asp.net 페이지가 있는데, 클릭 이벤트는 버튼이 수행해야하는 이벤트가 달라야합니다. 어떤 옵션이 페이지에서 더 많이 선택되었는지에 따라 다릅니다. 버튼 자체는 마스터 페이지에 포함되어 있으며 하위 페이지에서 선택한 내용의 영향을받습니다.동적 이벤트 처리기가 다시 게시 후 손실되었습니다.

이렇게하려면 사용자가 단추를 누를 때 마스터 페이지에 메서드가 있습니다. 사용자가 단추를 누르면 해당 단추에서 사용할 이벤트 핸들러를 전달하고 masterpage 이벤트 핸들러에 할당합니다. 그 버튼 : 다음

public void assignEvent(EventHandler saveEvent) 
    { 
      this.SaveButtonEvent+= saveEvent 
    } 

의 마스터 페이지에 저장 버튼을, 그것은 그러나 키를 눌러 때문에, 이벤트 핸들러

protected void save_Click(object sender, EventArgs e) 
    { 
     if (this.SaveButtonEvent != null) 
     { 
      this.SaveButtonEvent(this, e); 
     } 
    } 

이벤트 핸들러가 코드의 첫 번째 섹션에서 확인 할당되어 호출 저장 버튼은 포스트 백, SaveButtonEve를 발생시킵니다. nt 이벤트 핸들러가 null로 설정되어 있으므로 아무 일도 일어나지 않습니다.

다시 게시하는 동안 SaveButtonEvent 이벤트 처리기의 내용을 유지하려면 어떻게해야합니까? 아니면이 작업을 수행하는 더 좋은 방법이 있습니까?

편집 :

내가이 세션에 이벤트 핸들러를 저장하여 작동시킬 수 있지만, 이것은 좋은 생각이 아닌 것 같아.

+0

버튼을 만드는 방법을 보여줄 수 있습니까? 선언적으로 또는 프로그래밍 방식으로? 그렇다면 Page Live Cylce의 어디에 있습니까? – Marcel

+0

또는 버튼의 CommandArgument를 사용할 수도 있습니다 (http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.button.commandargument.aspx 참조). 옵션. – Marcel

답변

0

사용자가 하위 페이지의 단추를 누르면 어떤 이벤트 처리기를 전달해야하는지 나타내는 viewstate 값을 저장합니다. 그런 다음 하위 페이지의로드 이벤트에서 포스트 백인 경우 항상 저장된 값을 확인하고 마스터 페이지 메서드를 호출하여 이벤트 처리기를 적절하게 할당하십시오.

관련 문제