关于asp页面的母版页内容过滤

时间:2011-05-05 05:53:26

标签: asp.net visual-studio master-pages

我有一个主页面有标题和菜单,现在我想要如果我打开login.aspx页面,主页面的菜单应该隐藏,其余标题将保留在那里,意味着主页面是必需的,但没有菜单,什么是最好的解决方案吗?

3 个答案:

答案 0 :(得分:0)

您可以执行以下操作。把它放在母版页的代码中。

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Url.AbsoluteUri.Contains("Login.aspx"))
    {
        //Disable Menu here
    }
}

答案 1 :(得分:0)

您可以在母版页中显示或隐藏菜单。

喜欢

public void ShowMenu
{
    get { return Menu.Visible; }
    get { Menu.Visible = value; }
}

注意:如果菜单是静态的,您可以将其包围在PlaceHolder控件中,并使用此控件管理显示/隐藏它。我选择了这个特定的控件来建议,因为它不会渲染额外的HTML,因此页面中没有任何变化。

然后在登录页面中,说出页面加载或其他内容(不是在初始化或早期时间,已经创建了母版页):

protected void Page_Load(object sender, EventArgs e)
{
    var siteMasterPage =  Page.Master as SiteMasterPageClassName;
    if(siteMasterPage != null) siteMasterPage.ShowMenu = false;
}

<强>更新

解决此问题的另一种方法是使用嵌套的母版页。子母版页面包含菜单和其他内容,是所有页面的默认母版页。父母版页面包含甚至适用于登录页面的所有重要内容。

如果您已有母版页,则可以创建另一个母版页,将大多数内容从现有母版页移动到另一个母版页,对内容占位符使用相同的ID,然后使现有母版页本身具有masterpage文件设置为新的,然后应该很容易进入登录页面,并将主页文件名更改为新的主页文件。

答案 2 :(得分:0)

获取菜单控件并将其Visible属性设置为false 警告:这个好处是找到带有硬编码ID的控件,因此它可能会抛出NullReferenceException

Menu menu = Page.Master.FindControl("Menu1");
menu.Visible = false;