2012-07-19 94 views
0

我想要有如下兩級菜單:固定長度菜單

Item1 | Item2 | Item3

項目2.1 |項目2.2 |第2.3項

如何編寫站點地圖文件和MenuHelperModel以獲得如上所述的效果?

編輯:我創建網站地圖文件是這樣的:

<mvcSiteMapNode title="MyApp" clickable="false"> 
    <mvcSiteMapNode title="Item1" controller="Item11"> 
     <mvcSiteMapNode title="Item1.1" controller="Item11" /> 
     <mvcSiteMapNode title="Item1.2" controller="Item12" /> 
    </mvcSiteMapNode> 
    ... 
</mvcSiteMapNode> 

不幸IsInCurrentPath只爲MyApp的節點是真實的,所以我不能強調正確的項目。

+0

您是否嘗試過在節點上定義相應的控制器操作? – Xharze 2012-07-20 08:27:19

+0

MyApp節點沒有相應的控制器。 – 2012-07-20 10:23:18

回答

0

正如Xharze指出的那樣,您必須指定控制器操作,以使MvcSiteMapProvider節點能夠與MVC一起工作。

<mvcSiteMapNode title="MyApp" clickable="false"> 
    <mvcSiteMapNode title="Item1" controller="Item11" action="Index"> 
     <mvcSiteMapNode title="Item1.1" controller="Item11" action="Decimal1" /> 
     <mvcSiteMapNode title="Item1.2" controller="Item12" action="Decimal2" /> 
    </mvcSiteMapNode> 
    ... 
</mvcSiteMapNode> 

的事實,即MyApp的節點無法點擊只是意味着這將是一個不可點擊組節點,這是沒有必要的,以提供在此情況下的控制器或操作。

對於其他節點,控制器和動作參數必須對應於MVC控制器和動作。

public class Item1Controller : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Decimal1() 
    { 
     return View(); 
    } 

    public ActionResult Decimal2() 
    { 
     return View(); 
    } 
} 

例如,<mvcSiteMapNode title="Item1.1" controller="Item11" action="Decimal1" />節點將與上述因爲Decimal1操作方法兩者對應的控制器名稱和動作名稱匹配。