source

내용 페이지에서 마스터 페이지 컨트롤에 액세스하는 방법

nicesource 2023. 9. 1. 21:05
반응형

내용 페이지에서 마스터 페이지 컨트롤에 액세스하는 방법

상태 메시지 레이블이 포함된 마스터 페이지가 있습니다.다른 .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 파일에 다음을 추가합니다.propertyLabel다음과 같이:

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

반응형