2012-08-28 2 views
0

콘텐츠 페이지에서 마스터 페이지의 하이퍼 링크를 사용하거나 사용하지 않도록 설정하는 코드를 작성했습니다. 모든 것은 잘 작동하고 DisableHyperlinkInMasterPage 메서드를 호출 한 후에도 하이퍼 링크가 비활성화됩니다. EnableHyperlinkInMasterPage 메서드를 호출해도 여전히 하이퍼 링크가 작동하지 않습니다. 우리가 그 페이지를 떠날 경우, 하이퍼 링크가 작동하기 시작했다. 내 문제는 EnableHyperlinkInMasterPage 메서드를 호출 한 후 페이지를 떠나지 않고 하이퍼 링크가 여전히 비활성화되어 작동하지 않고 페이지를 종료 한 후에 활성화됩니다. 이 문제를 해결하는 방법을 알려주세요. 코드를 디버그하고 EnableHyperlinkInMasterPage 메서드에서 오류를 발견하지 못했습니다.콘텐츠 페이지에서 마스터 페이지의 하이퍼 링크를 활성화하는 동안의 문제

private void DisableHyperlinkInMasterPage() 
    { 
     AssociateMaster mymaster = (AssociateMaster)Page.Master; 
     HyperLink home = (HyperLink)mymaster.FindControl("Home"); 
     home.Enabled = false; 
     HyperLink profile = (HyperLink)mymaster.FindControl("ProfileLink"); 
     profile.Enabled = false; 
     HyperLink report = (HyperLink)mymaster.FindControl("Report"); 
     report.Enabled = false; 
     HyperLink signout = (HyperLink)mymaster.FindControl("SignOut"); 
     signout.Enabled = false; 
    } 

    private void EnableHyperlinkInMasterPage() 
    { 
     AssociateMaster mymaster = (AssociateMaster)Page.Master; 
     HyperLink home = (HyperLink)mymaster.FindControl("Home"); 
     home.Enabled = true; 
     HyperLink profile = (HyperLink)mymaster.FindControl("ProfileLink"); 
     profile.Enabled = true; 
     HyperLink report = (HyperLink)mymaster.FindControl("Report"); 
     report.Enabled = true; 
     HyperLink signout = (HyperLink)mymaster.FindControl("SignOut"); 
     signout.Enabled = true; 
    } 
+0

코드를 :

<%@ MasterType VirtualPath="~/MasterPage.master" %> 

사용하여이 링크를 활성화 및 비활성화 EnableHyperlinkInMasterPage() 내부 괜찮아 보인다. 페이지 라이프 사이클의 어느 시점에서이 메소드를 호출합니까? –

+0

NullRefernceException이 발생합니까? 왜 모든 콘텐츠 페이지가 아닌 마스터 페이지 자체에 (공용) 메서드를 제공하지 않는가? –

+0

@Edwin de Koning- 콘텐츠 페이지를로드 한 후에이 메서드를 호출합니다. –

답변

1

링크를 활성화하거나 비활성화하려면 속성을 사용해보십시오. 그리고 FindControl을 최대한 적게 사용하십시오. lnkTest라는 마스터 페이지에 링크가 있다고 가정하십시오. 웹 페이지에이 줄을 추가 한 후 콘텐츠 페이지에서 다음

public bool TestLinkEnabled 
{ 
     get { return lnkTest.Enabled; } 
     set {lnkTest.Enabled = value; } 
} 

을 : 마스터 페이지에이 코드를 작성

Master.TestLinkEnabled = true; 
    Master.TestLinkEnabled = false; 
관련 문제