2008-10-23 3 views
2

C#을 사용하고 있습니다. 기본적으로 Visual Studio 2008에서 마스터 페이지의 유무에 관계없이 웹 폼을 추가하면 페이지 지시문에서 AutoEventWireup 특성이 true로 설정됩니다. 이 속성은 마스터 페이지 마스터 지시문에서도 true로 설정됩니다.ASP.Net의 페이지 지시문에서 AutoEventWireup을 설정해야하는 값은 무엇입니까?

AutoEventWireup을 (true/false)로 설정해야하는 값은 무엇입니까?

두 값의 장단점은 무엇입니까?

도움을 주시면 대단히 감사하겠습니다.

감사합니다.

답변

3

이것은 Microsoft에서 설정 한 명명 규칙에 따라 이벤트 처리기를 이벤트에 자동으로 연결하는 방법입니다.

올바르게 구현 된 경우이를 반영하는 방법이 있습니다. 런타임에 ASP.NET은 클래스를 검사하고 예상되는 명명 규칙과 일치하는 서명이있는 메서드를 찾은 다음 해당 이벤트에 대한 처리기로 연결합니다.

그렇다면 전문가는 표준 접근 방식이므로 이벤트 핸들러를 직접 연결하는 번거 로움을 덜 수 있습니다. 감지 된 "사기범"은 자신이 직접하는 것보다 조금 더 많은 비용이 드는 추가 단계 (반사)가 필요하다는 것입니다.

대부분의 경우 반사 "비용"은 너무 적어 언급 할 가치가 거의 없지만 커버 아래에서 무슨 일이 일어나는지 알고 있어야합니다.

0

false로 설정된 경우 Page_Load 또는 Page_PreInit와 같은 메소드가 있으면 실행되지 않습니다. AutoEventWireup은 그와 같은 이름의 이벤트가있는 경우 해당 이벤트에 연결된 이벤트 핸들러를 가져야 함을 의미합니다.

1

이렇게하면 런타임에서 자동으로 Page_Load와 같은 기존 페이지 라이프 사이클 메소드를 해당 이벤트 핸들러 (Page.Load)에 연결합니다. 때문에, 당신은 또한 base.OnLoad를 호출에 대해 걱정할 필요가 없습니다

protected void Page_Load(object sender, EventArgs e) 
{ 
} 

: 대신 MS 규칙의

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
} 

: false로으로 AutoEventWireup을 설정하면 다음과 같은 뭔가가 필요 wireup이 자동으로 그렇게합니다. 하지만 거짓으로 설정하면 성능이 약간 좋아질 수 있습니다.

-Nate Davis

+0

이것은 대부분 잘못되었습니다. 가장 먼저 표시하는 방법은 이벤트 처리기가 아니라 오버라이드입니다. 큰 차이가 있으며 주제에 관해 읽어 보시기 바랍니다. 수동으로 와이어 연결해야하는 방법은 다음과 같이 일반적으로 생성자에 코드를 넣는 것입니다. –

+0

this.Load + = new EventHandler (MyPage_Load); –

+0

그런 다음 자동 생성 된 Page_Load 처리기와 동일한 서명으로 MyPage_Load를 구현합니다. –

관련 문제