내용 페이지에서 마스터 페이지 컨트롤에 액세스하는 방법
상태 메시지 레이블이 포함된 마스터 페이지가 있습니다.다른 .aspx 페이지에서 상태 텍스트를 설정해야 합니다.콘텐츠 페이지에서 이 작업을 수행하는 방법은 무엇입니까?
public partial class Site : System.Web.UI.MasterPage
{
public string StatusNachricht
{
get
{
return lblStatus.Text;
}
set
{
lblStatus.Text = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
저는 이것을 시도해 보았지만 성공하지 못했습니다.
public partial class DatenAendern : System.Web.UI.Page
{
var master = Master as Site;
protected void Page_Load(object sender, EventArgs e)
{
if (master != null)
{
master.setStatusLabel("");
}
}
protected void grdBenutzer_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
//some code
if (master != null)
{
master.setStatusLabel("Passwort erfolgreich geändert.");
}
}
catch (Exception ex)
{
if (master != null)
{
master.setStatusLabel("Passwort konnte nicht geändert werden!");
}
}
}
}
}
MasterPage.cs 파일에 다음을 추가합니다.property
의Label
다음과 같이:
public string ErrorMessage
{
get
{
return lblMessage.Text;
}
set
{
lblMessage.Text = value;
}
}
당신의aspx
페이지 지시문 바로 아래에 다음을 추가합니다.
<%@ Page Title="" Language="C#" MasterPageFile="Master Path Name"..... %>
<%@ MasterType VirtualPath="Master Path Name" %> // Add this
그리고 당신의 안에서codebehind(aspx.cs)
페이지에 쉽게 액세스할 수 있습니다.Label Property
설정합니다.text
필요에 따라다음과 같이:
this.Master.ErrorMessage = "Your Error Message here";
내용 페이지에서 레이블에 액세스하고 다음과 같은 텍스트를 설정할 수 있습니다.
여기서 'lblStatus'는 마스터 페이지 레이블 ID입니다.
레이블 lblMaster 상태 =(레이블)마스터.컨트롤 찾기("lblStatus"); lblMaster 상태.텍스트 = "콘텐츠 페이지의 평균";
그건 효과가 있다.
하위 페이지에서 마스터 페이지 컨트롤을 찾으려면
Label lbl_UserName = this.Master.FindControl("lbl_UserName") as Label;
lbl_UserName.Text = txtUsr.Text;
시스템에 이에 대한 도우미 방법이 있습니다.웹.UI.페이지 클래스
protected T FindControlFromMaster<T>(string name) where T : Control
{
MasterPage master = this.Master;
while (master != null)
{
T control = master.FindControl(name) as T;
if (control != null)
return control;
master = master.Master;
}
return null;
}
그런 다음 아래 코드를 사용하여 액세스할 수 있습니다.
Label lblStatus = FindControlFromMaster<Label>("lblStatus");
if(lblStatus!=null)
lblStatus.Text = "something";
하지만 이마저도 효과가 없을 것입니다.
Site master = Master as Site;
사용할 수 없기 때문에this
들판에서 그리고.Master as Site
와 동일합니다.this.Master as Site
그래서 필드를 초기화합니다.Page_Init
페이지가 완전히 초기화되고 사용할 수 있는 경우this
:
Site master = null;
protected void Page_Init(object sender, EventArgs e)
{
master = this.Master as Site;
}
중첩된 마스터 페이지가 있는 경우 더 복잡합니다.먼저 중첩된 마스터 페이지가 들어 있는 내용 컨트롤을 찾은 다음, 중첩된 마스터 페이지의 컨트롤을 찾아야 합니다.
결정적인 부분: 마스터.마스터.
다음을 참조하십시오. http://forums.asp.net/t/1059255.aspx?Nested+master+pages+and+Master+FindControl
예:
'컨텐츠 컨트롤 찾기
내용 자리 표시자로 지정 = Me.Master.마스터.컨트롤 찾기("cphMain")
'이제 그 내용 안에서 컨트롤을 찾습니다.
Dimlbtn링크 단추로 저장 = ct.FindControl("lbtnSave")
HTML 요소에 액세스하려는 경우: HTML 앵커입니다...
내 탐색 모음에 목록 항목이 아닌 항목이 있습니다(<li>
) 하지만 오히려 html 앵커 (<a>
)
아래 참조: (사이트 마스터입니다.)
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="" runat="server" id="liHome">Home</a>
<a class="mdl-navigation__link" href="" runat="server" id="liDashboard">Dashboard</a>
</nav>
다른 페이지의 코드 뒤에 있는 당신의 코드에는, 제 경우, 그것은 로그인 페이지입니다.
PageLoad()에서 다음을 정의합니다.
HtmlAnchor lblMasterStatus = (HtmlAnchor)Master.FindControl("liHome");
lblMasterStatus.Visible =false;
HtmlAnchor lblMasterStatus1 = (HtmlAnchor)Master.FindControl("liDashboard");
lblMasterStatus1.Visible = false;
이제 사이트 마스터 컨트롤에 액세스하여 로그인 페이지에 표시되지 않도록 설정했습니다.
언급URL : https://stackoverflow.com/questions/15573505/how-to-access-master-page-control-from-content-page
'source' 카테고리의 다른 글
package-lock.json'을 삭제하여 충돌을 신속하게 해결 (0) | 2023.09.01 |
---|---|
마리아의 데이터를 업데이트하기 위해 WPF 클라이언트에 메시지를 보내기 위한 신호 RDB (0) | 2023.09.01 |
JSON 개체를 ASP로 전송했습니다.NET WebMethod, jQuery 사용 (0) | 2023.09.01 |
PHP 치명적 오류: 빈 속성에 액세스할 수 없습니다. (0) | 2023.09.01 |
안드로이드에서 원형 이미지 뷰를 만드는 방법은 무엇입니까? (0) | 2023.09.01 |