자리 표시 자 컨트롤이있는 마스터 페이지가 있습니다.
마스터 페이지에서 상속 된 페이지가 있습니다.
그런 다음 페이지에 표시되는 사용자 지정 컨트롤이 있습니다.이 사용자 지정 컨트롤에는 마스터 페이지에 대한 캐스트가 있으므로 자리 표시 자 컨트롤에 액세스하여 가시성을 켜고 끌 수 있습니다. 디버거에서 볼 때 모든 것이 예상대로 작동하지만 자리 표시 자 컨트롤이 가시성을 끄지 못합니다.
나는 이것이 이벤트가 시작되는 순서대로 관련이 있다고 생각합니다. 마스터 페이지가 이미 렌더링 된 후 페이지의 사용자 지정 컨트롤에있는 코드가 실행되는 것으로 보입니다.
누구든지이 페이지가 렌더링되는 방식에 어떻게 영향을 미칠 수 있는지 알고 있습니까? 그러면 사용자 지정 컨트롤이 자리 표시자를 켜고 끌 수 있습니다.
컨트롤의 코드는 다음과 같습니다.
protected override void Render(HtmlTextWriter writer)
{
var master = this.Page.Master as Site;
if (master != null) // cast failed, your master is a different type
{
master.NavBar.Visible = false;
}
// other stuff
}
이 문제에 대한 해결책은 컨트롤, 마스터 페이지 및 페이지가 실행되는 순서였으며 사용자 지정 컨트롤의 설정을 무시했습니다. 해결 방법은 OnPreRender (EventArgs e) 메서드의 사용자 지정 컨트롤에이 기능을 추가하는 것입니다.
protected override void OnPreRender(EventArgs e)
{
var master = this.Page.Master as Site;
if (master != null) // cast failed, your master is a different type
{
var progressShown = master.FindControl("ProgressShown");
if (progressShown != null)
{
master.NavBar.Attributes.Add("class", "test");
}
}
base.OnPreRender(e);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다