2012-08-28 115 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?为什么不在MasterPage本身而不是每个内容页面中提供(公共)方法? –

+0

@Edwin de Koning-我在加载Content页面后调用此方法。 –

回答

1

尝试使用属性来启用和禁用链接。尽可能少地尝试使用FindControl。考虑你的MasterPage中有一个名为lnkTest的链接。在你的母版页写这样的代码:

public bool TestLinkEnabled 
{ 
     get { return lnkTest.Enabled; } 
     set {lnkTest.Enabled = value; } 
} 
在您的内容页面

然后添加这一行到您的网页后:

Master.TestLinkEnabled = true; 
    Master.TestLinkEnabled = false;