如何同时从单个动作创建分组和可点击节点?

时间:2013-11-29 12:23:52

标签: asp.net-mvc mvcsitemapprovider

我有控制器帐户及其方法LogOn。如何创建这样的站点地图:

-Account // non clickable, just grouping
--Log On // clickable

?如果我以XML文件(mvc.sitemap)的形式使用站点地图,我可以这样写:

<mvcSiteMapNode 
    title="Account" 
    controller="Account" 
    action="LogOn" 
    clickable="false" 
    key="AccountGroup" >

    <mvcSiteMapNode 
        title="Log On" 
        controller="Account" 
        action="LogOn"
        key="LogOn" />
</mvcSiteMapNode>

但我想只用MvcSiteMapNodeAttribute属性来做。但是,只有一个这样的属性可以应用于该方法。我也不想使用一些虚拟方法来创建分组节点。

目前我只有一种方法 - 在XML mvc.sitemap文件中创建分组节点,以及可点击的节点 - 使用MvcSiteMapNodeAttribute属性。但是我想尽可能地逃避用手写地图。可以在没有对XML中的节点进行分组的情况下完成吗?

1 个答案:

答案 0 :(得分:1)

如果使用v4,您可以将多个MvcSiteMapNodeAttributes应用于单个操作方法。

//
// GET: /Account/LogOn
[MvcSiteMapNodeAttribute(Title = "Account", ParentKey = "Home", Key = "AccountGroup", Clickable = false)]
[MvcSiteMapNodeAttribute(Title = "Log On", ParentKey = "AccountGroup", Key = "LogOn")]
public ActionResult LogOn()
{
    return View();
}

如果您愿意,也可以将分组节点放在控制器类上(即使在v3中)。

[MvcSiteMapNodeAttribute(Title = "Account", ParentKey = "Home", Action = "LogOn", Key = "AccountGroup", Clickable = false)]
public class AccountController
{

     // Implementation here
}