2011-11-05 61 views
2

我有這樣的代碼,是在我的網站我的導航欄,它是在頂部我_layout.cshtml網頁...如何在MVC 3中的視圖的html塊中創建類?

<div id="nav"> 
      <ul> 
       <li id="current"><a href="/home/index">Home</a></li> 
       <li><a href="/code/index">Code Stuff</a></li> 
       <li><a href="/music/index">Music Stuff</a></li> 
       <li><a href="/blog/index">Blog</a></li> 
       <li><a href="/links/index">Links</a></li> 
       <li><a href="/contact/index">Contact</a></li> 
      </ul>  
     </div> 

林用剃刀將視圖頁面,我需要能夠注入id =「當前」進入該IM頁面的塊。我的解決辦法是做類似

<div id="nav"> 
      <ul> 
       <li id="@Model.PageName"><a href="/home/index">Home</a></li> 
       <li id="@Model.PageName"><a href="/code/index">Code Stuff</a></li> 
       <li id="@Model.PageName"><a href="/music/index">Music Stuff</a></li> 
       <li id="@Model.PageName"><a href="/blog/index">Blog</a></li> 
       <li id="@Model.PageName"><a href="/links/index">Links</a></li> 
       <li id="@Model.PageName"><a href="/contact/index">Contact</a></li> 
      </ul>  
     </div> 

當然,這不會工作,因爲所有的李項將在頁面名稱,但。因此,沒有if語句我怎麼可以這樣使用動態魁梧?

回答

3

首先,你真的應該使用類(如標題所示)而不是id(如你的問題文字所示)。其次,我將定義一個函數,它使用一個參數區分鏈接,並輸出空字符串或current,具體取決於它是否與頁面名稱匹配。

@functions 
{ 
    public string MenuClass(string menuItem) 
    { 
     return string.Equals(Model.PageName, menuItem, StringComparison.OrdinalIgnoreCase) 
        ? "current" 
        : ""; 
    } 
} 


<div id="nav"> 
     <ul> 
      <li class="@MenuClass("Home")"><a href="/home/index">Home</a></li> 
      <li class="@MenuClass("Code")"><a href="/code/index">Code Stuff</a></li> 
      ... 
     </ul>  
    </div> 
+0

嗨,我在哪裏把功能放在控制器?不要以爲你可以給你一個建議的提示嗎? – Exitos

+0

@ Pete2k函數在視圖中,我已經添加了一個例子。 – tvanfosson

+0

嘿謝謝....好吧,我看到你在做什麼,我把它放在_layout頁面上,但模型爲null,這是正常的嗎? – Exitos

相關問題