我的菜單在母版頁,如何更改菜單點擊后的效果


網友問:

“ 我的菜單在母版頁中,用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);   // 注意啦,每個子頁面參數在這里設置!!!
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM