FindControl을 사용하지 않고 콘텐츠 페이지에서 마스터 페이지에 레이블을 설정하려고합니다. 그래서, 마스터 페이지에서 I 선언 :마스터 페이지에서 컨트롤 찾기
public partial class MainMasterPage : System.Web.UI.MasterPage
{
public string UserOfficeLabel
{
get { return lblUserOffice.Text; }
set { lblUserOffice.Text = value; }
}
public string OfficeLocationLabel
{
get { return lblOfficeLocation.Text; }
set { lblOfficeLocation.Text = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
....
}
}
"UserOfficeLabel"와 "OfficeLocationLabel"마스터 페이지에 레이블이 있습니다. 그런 다음 컨텐츠 페이지 (에서 .aspx) 내가 "페이지"지시문에서 다음 지시문을 추가 : 나는 액세스하려고 뒤에 conent 페이지의 코드에서
<%@ MasterType VirtualPath="~/Main/MainMasterPage.master" %>
(.cs 파일) 설정/라벨 :
Master.UserOfficeLabel = ...
이지만 UserOfficeLabel은 Master 용 옵션이 아닙니다 (VS Intellisense는이를 옵션으로 나열하지 않습니다). 어쨌든 그것을 추가하면 "MainMasterPage.UserOfficeLabel은 보호 수준에 접근 할 수 없습니다"라고 표시됩니다.
왜 FindControl을 사용하지 않으시겠습니까? –
"나사가 있는데 나사로 돌리고 싶지만 나사 드라이버를 사용하고 싶지 않습니다. 제발 도와주세요. 왜 그런지 말하지 않겠습니다." – asawyer
FindControl 사용은 OO/캡슐화의 관점에서 좋지 않으므로 가능한 경우 피해야합니다. 이것은 C++에서 포인터로 private 변수를 노출하는 것과 유사합니다. 이 질문에 대한 답변이되기를 바랍니다. – NoBullMan