2011-03-30 89 views
2

我有一个简单的母版页(mas​​ter.aspx),它有3个链接按钮,即HomeLBTn--将用户重定向到home.aspx,LoginLBtn-到login.aspx,RegisterLBtn-到Register.aspx关于母版页的问题

我的项目中的每一页都继承了母版页。 home.aspx也继承master.aspx,但我不希望home.aspx继承HomeLBtn,我希望它继承剩余的2个LBtn,但不是HomeLBtn。我怎样才能将这一情况到Home.aspx

请帮我在期待

感谢

回答

4

一个办法是找到在母版的控制,并设置其可见性设置为false:

Page.Master.FindControl("HomeLBtn").Visible = False 

这将在Page_Load(或其他生命周期事件)页面上进行不应该显示主页按钮。

0

你可以在母版页是这样的(检查子页面是什么)

//If the child page is viewing an order then disable the new request button  
if (this.ContentPlaceHolder1.Page is OrderView)  
{ 
     base.RemoveMenuItem("New Request", mnuSettings);   
} 

注:base.RemoveMenuItem是我的基地页

http://wraithnath.blogspot.com/2010/09/how-to-hide-show-controls-on-master.html

的方法

另一种选择是将属性添加到子页面和母版页并使用会话数据隐藏和显示按钮。

例如。在子页面:

protected MyCustomMasterPage CustomMasterPage 
{ 
    get 
    { 
    return this.Master as MyCustomMasterPage; 
    } 
} 

在你的主页,你可以有你可以设置为隐藏会话变量,并显示按钮

public bool HomeVisible 
{ 
    get 
    { 
     return (bool) Session["HomeVisible"]; 
    } 
    set 
    { 
     Session["HomeVisible"] = value; 
    } 
} 

你会再加载母版页时检查HomeVisible财产显示/隐藏按钮。然后你可以从子页面设置它。

this.MyCustomMasterPage.HomeVisible = false; 

也许不是最好的方式,但他们的工作

+0

这是不可扩展的。如果他有更多的页面需要这个呢?最好在具有特定需求的每个页面上执行此操作。您在母版页上执行此操作时会增加开销,因为没有特殊需求的页面仍然需要运行此逻辑 – 2011-03-30 16:29:51

+0

我同意,另一个选项是将属性添加到子页面以投射母版页并在其中检查。我把它添加到解决方案。 – WraithNath 2011-03-30 16:31:43

0

在master.aspx,确定注册并登入链接按钮,并在那里Home键会去一个内容占位符。然后让Home.aspx继承master.aspx。然后创建从master.aspx继承的第二个母版页(mas​​ter2.aspx)。在master2中,在内容占位符中添加Home链接按钮,并让其他页面从master2继承。