2011-09-26 19 views
2

對於我的網站項目,我使用的是ASP.NET MVC「Razor」。隨我學習。跨頁面更改所選菜單項類

我在我的網站上有5或6個頁面,而另一個網站上有一個頁面。我希望用戶覺得他們正在使用相同的網站。

沒有爲頁隨後使用XHTML無序列表和CSS佈局的標準模式的典型HTML菜單:

<ul id="menu"> 
    <li class="selected"><a href="@Href("~/")">Home</a></li> 
    <li><a href="http://ceklog.kindel.com">cek.log</a></li> 
    <li><a href="@Href("~/Services")">Services</a></li> 
    <li><a href="@Href("~/Charlie")">Charlie's Stuff</a></li> 
    <li><a href="@Href("~/Contact.cshtml")">Contact</a></li> 
</ul> 

在其他地方,所以我發現的問題與我相似,那裏的人想跟蹤選定的菜單項,但在動態頁面內。例如:

Javascript Changing the selected Menu items class

但是,這種方法不會在我的情況,因爲在我的情況下工作的用戶是不會改變一個頁面上進行選擇,但導航到另一個頁面完全。

這怎麼辦?

回答

1

...我想通了。

我用Razor在服務器端實現這一點。

首先我我_SiteLayout.cshtml網頁上實現的功能(所有頁面使用的模板):

@functions { 
    public string Selected(string PageTitle) { 
     if (Page.Title == PageTitle) 
      return "selected"; 
     else 
      return ""; 
    } 
} 

然後我在列表中使用此功能:

<ul id="menu"> 
    <li class="@Selected("Home")"><a href="@Href("~/")">Home</a></li> 
    <li class="@Selected("cek.log")"><a href="http://ceklog.kindel.com">cek.log</a></li> 
    <li class="@Selected("Services")"><a href="@Href("~/Services")">Services</a></li> 
    <li class="@Selected("Charlie's Stuff")"><a href="@Href("~/Charlie")">Charlie's Stuff</a></li> 
    <li class="@Selected("Contact")"><a href="@Href("~/Contact.cshtml")">Contact</a></li> 
</ul> 

完美的作品。在我的外部網頁上,我只是手工編碼它,因爲它基於Wordpress而不是Razor。