콘텐츠 페이지에서 마스터 페이지의 .Net 요소에 액세스하는 방법은 무엇인가요?
마스터 페이지의 '콘텐츠플레이스홀더'에 로드된 페이지에서 마스터 페이지의 요소에 액세스할 수 있나요?
마스터 페이지의 탐색 영역에 사람의 이름을 나열하는 ListView가 있습니다. ListView가 데이터 바인딩된 테이블에 사람이 추가된 후에 ListView를 업데이트하고 싶습니다. 현재 ListView
는 캐시가 다시 로드될 때까지 값을 업데이트하지 않습니다. ListView.DataBind()를 다시 실행하면 목록 뷰의 내용이 업데이트되는 것을 발견했습니다. 마스터 페이지를 사용하는 페이지에서
ListView.DataBind()`를 실행할 수 없습니다.
아래는 내가 하고 싶었던 작업의 샘플이지만 컴파일러 오류는 다음과 같이 말합니다.
"현재 컨텍스트에 PeopleListView가 존재하지 않습니다.
GIS.master - ListView가 있는 위치
...<asp:ListView ID="PeopleListView"...
GISInput_People.aspx - 마스터 페이지로 GIS.master를 사용합니다.
GISInput_People.aspx.cs
AddNewPerson()
{
// Add person to table
....
// Update Person List
PeopleListView.DataBind();
...
}
C# .Net에서 이와 같은 문제를 해결하는 가장 좋은 방법은 무엇인가요?
13
6
이 마스터 페이지의 구조에 대해 콘텐츠 페이지가 너무 많은 것을 알고 있어야 하기 때문에 this.Master.FindControl 또는 이와 유사한 것을 사용하여 이 작업을 수행할 수 있다고 생각하지만 그렇게 해서는 안됩니다.
마스터가 이벤트를 수신하고 실행될 때 다시 바인딩할 수 있는 콘텐츠 영역에서 이벤트를 실행하는 것과 같은 다른 방법을 제안하고 싶습니다.
마스터 페이지에서 컨트롤의 이름이 라고 가정합니다.
그러나 특히 페이지에 마스터 페이지가 두 개 이상 있을 수 있는 경우에는 @palmsey이 더 정확합니다. 이들을 분리하고 이벤트를 사용하세요.
옵션 1 너 공물 마스터 페이지에 제어입니다 만들 수 있다.
이 같은 내용에 대해 액세스하면 페이지
옵션 2: 마스터 페이지:
컨텐츠에 대한 페이지:
옵션 3: 몇몇 공공 만들 수 있는 방법을 잘 어울려
그러나 이러한 외곽진입 그리 유용한 경우 제한적으로 사용할 수 있도록 미리 정의된 제어 및 그냥
다음 (ASP.NET) 는 한 너희에게베풀어진 같아 디렉티브을.
MSDN 참조
이 참조할 때 도움이 된다. 마스터에는 강하게 만들어 입력되었는지 참조입니다 마스터야 호출이네요 그런 다음 목록보기 참조할 필요가 없는 인간.
이 코드를 통해 액세스할 수 있습니다. 프로파일링하려는 제어하는 마스터스핀드콘트럴 (콘트로이드). 이 참조가 되돌려줍니다 제어입니다 도왔으매 변경 사항이 효과적이다. 사격에 대한 각 이벤트가 불가능했을 것이다.
마스터 페이지의 이름이 MyMaster라고 가정합니다:
편집: PeopleListView는 기본적으로 비공개로 선언되므로 이를 공개로 변경하거나 공개 속성 래퍼를 만들어 페이지에서 액세스할 수 있도록 해야 합니다.