我的菜单在母版页,如何更改菜单点击后的效果

原文:我的菜单在母版页,如何更改菜单点击后的效果

网友问:

“ 我的菜单在母版页中,用li做的,选中的菜单有一个Selected类,设置选中后的背景。
问题出来了,我其他所有页面都是基于这个母版页,点击菜单转到其他页面,怎么修改这个被点击的菜单的背景呢?
只有选中的菜单才有Selected类。
那就是怎么去除之前选择的菜单Selected类, 而把被点击的菜单加上Selected类??????????? ”

 

Insus.NET模拟演示:

 

所有参数在子页面设置与传给MasterPage。本例子中,在masterpage拉了四个LinkButton. 在每个子页怎样去找到Masterpage相对应的LinkButton呢?用Findcontrol(),用foreach去循环所有LinkButton?

Insus.NET惯用的方法,就是写了一个接口Interface。因为所有子网页,只管设置参数与指定目标。而怎样找到目录,不是子网页的事情。

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for ISetValue
/// </summary>
namespace Insus.NET
{
    public interface ISetValue
    {
        void SetValue(string colorName,string pageName);
    }
}

 

MasterPage实现这个接口中:

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public partial class MySite : System.Web.UI.MasterPage,ISetValue 
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public void SetValue(string colorName, string pageName)
    {
        foreach (Control ctl in menu.Controls)
        {
            if (ctl is LinkButton)
            { 
                LinkButton lb = (LinkButton)ctl;
                if (lb.PostBackUrl.EndsWith (pageName))
                    lb.BackColor= System.Drawing.Color.FromName(colorName);
            }
        }
    }
}

 

Masterpage.aspx:

View Code

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MySite.master.cs" Inherits="MySite" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <fieldset>
            <legend>Masterpage</legend>
            <div id="menu" runat="server">
                <asp:LinkButton ID="LinkButton1" runat="server" BorderWidth="1" Text="PageA" PostBackUrl="~/Page1.aspx"></asp:LinkButton>&nbsp;
                <asp:LinkButton ID="LinkButton2" runat="server" BorderWidth="1" Text="PageB" PostBackUrl="~/Page2.aspx"></asp:LinkButton>&nbsp;
                <asp:LinkButton ID="LinkButton3" runat="server" BorderWidth="1" Text="PageC" PostBackUrl="~/Page3.aspx"></asp:LinkButton>&nbsp;
                <asp:LinkButton ID="LinkButton4" runat="server" BorderWidth="1" Text="PageD" PostBackUrl="~/Page4.aspx"></asp:LinkButton>&nbsp;
            </div>
        </fieldset>
        <fieldset>
            <legend>Content</legend>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </fieldset>
    </div>
    </form>
</body>
</html>

 

所有子页面的cs代码:

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;

public partial class Page1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Data_Binding();
        }
    }

    void Data_Binding()
    {
        string path = Request.RawUrl;
        string pageName = path.Substring(path.LastIndexOf('/'));
        ((ISetValue)this.Master).SetValue("#ff0000", pageName);  //注意啦,每个子页面参数在这里设置!!!
    }
}

 

时间: 2024-10-18 04:30:29

我的菜单在母版页,如何更改菜单点击后的效果的相关文章

win8开始菜单在哪 windows8开始菜单应用的方法与技巧

Windows 8操作系统是微软最新一代系统,虽然目前使用win8的朋友均为消费者预览版,正式版发布还有一段时间,通过windows8我们可以发现该系统改进与重新设计的部分很多,本文主要为大家介绍的是windows 8开始菜单,因为该菜单相比windows7改变很大,有点类似于智能手机的操作,或许这也正验证了微软所称的win8可以支持移动数码产品吧. 不过如此大的改变,很多刚接触win8的用户,查找一般应用程序时则有点不知所措,以往可以通过操作系统开始菜单找到的应用程序,一时间不知藏到哪里了.下

bootstrap做一个下拉菜单,在第一个菜单选择了省以后,第二个下拉菜单会出来该省的市

问题描述 bootstrap做一个下拉菜单,在第一个菜单选择了省以后,第二个下拉菜单会出来该省的市 bootstrap做一个下拉菜单,在第一个菜单选择了省以后,第二个下拉菜单会出来该省的市 解决方案 http://blog.csdn.net/zoutongyuan/article/details/39431299

jquery 菜单移动-这是一个菜单移动的操作,但是顺序a向上移动有错误,求指导,请问怎么控制不超出父节点

问题描述 这是一个菜单移动的操作,但是顺序a向上移动有错误,求指导,请问怎么控制不超出父节点 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 无标题文档 #wrap{margin:20px auto;width: 500px;} #wrap li{list-st

eclipse插件 java-eclispe的run菜单的run as...子菜单,怎么控制显示?

问题描述 eclispe的run菜单的run as...子菜单,怎么控制显示? 在eclispe的run菜单的run as...子菜单里面加上一个选项[Test Run],就是加一个launch shortcut在里面,扩展了org.eclipse.debug.ui.launchShortcuts扩展点,[Test Run]菜单功能正常可用. 问题:现在想选中项目右键时,通过自定义逻辑来控制[Test Run]是否显示,有大神知道怎么控制吗? 判断逻辑:获取选中项目中的pom.xml文件,解析文

link环境下制作一款《订餐软件》,要想在菜单选择中增加时令菜单怎么实现界面输入?

问题描述 link环境下制作一款<订餐软件>,要想在菜单选择中增加时令菜单怎么实现界面输入? link环境下制作一款<订餐软件>,要想在菜单选择中增加时令菜单怎么实现界面输入? 解决方案 可以用一个字段将时令菜和普通菜分开,不知道这样设计你满意不?

使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效_jquery

这是一款仿windows10开始菜单的下拉导航菜单特效.该下拉菜单使用jQuery和CSS3来完成类似windows10开始菜单样式效果,它的代码简洁,效果非常时尚. 查看演示      源码下载 该下拉菜单的HTML结构非常简单,基本的HTML结构如下: <div id="top-bar" class="top-bar"> <div class="bar"> <button id="navbox-trig

基于Bootstrap实现的下拉菜单手机端不能选择菜单项的原因附解决办法_javascript技巧

基于Bootstrap做的下拉菜单在电脑浏览器中可正常使用,在手机浏览器中能弹出下拉列表,却不能选择列表中的菜单项,通过自己百度查找原因将bootstrap脚本文件中的ontouchstart 替换为 disable-ontouchstart可以解决,替换后并不能解决.(红米手机UC浏览器不支持,小米手机UC浏览器正常,其他暂时未测试) jquery:v1.11.2 bootstrap:v3.3.4 以下为前台页面代码: <div class="input-group">

JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集_javascript技巧

本文实例讲述了JS实现的仿东京商城菜单.仿Win右键菜单及仿淘宝TAB特效.分享给大家供大家参考.具体如下: 这是一个非常好的实用菜单整合特效,有多级下拉菜单.仿东京商城的拉出式菜单.仿Windows的右键菜单,仿淘宝的标签Tab菜单,每一个都是精彩,代码中附有丰富的注释,便于你的学习和修改. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-f-jd-taobao-win-rbutton-tab-demo/ 具体代码如下: <!DOCTYP

动态网站导航菜单:Javascript和jQuery导航菜单教程

文章简介:非常优秀的jQuery+CSS实现动态导航菜单教程. 导航栏是一个网站最常使用的部分之一,用户可以通过它有序地访问网页并返回到主页.这就要求导航栏一定要简单.易用,不要让用户在浏览网站过程中迷失.接下来我们要谈的是其下的导航菜单设计.导航菜单不宜设计成过分花哨,产生令人厌烦的感觉.但也要追求赏心悦目,同时一定要做到方便查找.现在,您可以利用Javascript和jQuery技术设计出不同的导航菜单,本篇文章收集了一些相关教程. 最后,值得提醒的是不要过分使用动态菜单,不要过分复杂,这样