it-swarm.dev

콘텐츠 페이지에서 마스터 페이지 컨트롤에 액세스하는 방법

상태 메시지 레이블이 포함 된 마스터 페이지가 있습니다. 다른 .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!");
                }                                       
            }
        }
    }                   
}
44
LeonidasFett

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";
73
Praveen Nambiar

컨텐츠 페이지에서 레이블에 액세스하고 다음과 같은 텍스트를 설정할 수 있습니다

여기서 'lblStatus'는 마스터 페이지 레이블 ID입니다.

 라벨 lblMasterStatus = (라벨) Master.FindControl ( "lblStatus"); 
 
 lblMasterStatus.Text = "콘텐츠 페이지에서의 측정"; 
29
DOTNET Team

작동합니다

자식 페이지에서 마스터 페이지 컨트롤을 찾으려면

Label lbl_UserName = this.Master.FindControl("lbl_UserName") as Label;                    
lbl_UserName.Text = txtUsr.Text;
8
shweta

내 System.Web.UI.Page 클래스에 도우미 메소드가 있습니다.

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";
4
surya

는 로컬 변수에서만 필드 에서 var를 사용할 수 없습니다.

그러나 이것은 작동하지 않습니다.

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;
}
3
Tim Schmelter

중첩 된 MasterPage가있는 경우 더 복잡합니다. 먼저 중첩 된 MasterPage가 포함 된 콘텐츠 컨트롤을 찾은 다음 중첩 된 MasterPage에서 해당 컨트롤을 찾아야합니다.

결정적 비트 : Master.Master .

여기를보십시오 : http://forums.asp.net/t/1059255.aspx?Nested+master+pages+and+Master+FindControl

예:

'컨텐츠 컨트롤 찾기

ContentPlaceHolder = Me.Master.Master.FindControl ( "cphMain")로 흐리게 표시

'이제 컨텐츠 내에서 컨트롤을 찾으십시오.

Dim lbtnSave As LinkButton = ct.FindControl ( "lbtnSave")

1
Resource

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;

이제 사이트 마스터 컨트롤에 액세스하여 로그인 페이지에서 보이지 않게했습니다.

0
James Heffer