繁体   English   中英

MvcSiteMapProvider菜单,在Asp.Net Mvc 5的Controller类中具有过滤器属性

[英]MvcSiteMapProvider Menu with Filter Attributes in the Controller Class in Asp.Net Mvc 5

我正在使用这个库: https : //github.com/maartenba/MvcSiteMapProvider

我想要这样的菜单结构:

<ul>
    <li><a href="/">Home</a></li>
    <li>
        <a href="#">Stuff</a>
        <ul>
            <li><a href="/Stuff/"<li>
            <li><a href="/Stuff/Add"<li>
        </ul>
    </li>
</ul>

我正在使用不带xml的MvcSiteMapNode; 只是装饰者的方式。

所以我有这个控制器:

[MvcSiteMapNode(Title = "Stuff", ParentKey = "root", Key = "stuff-key", Url = "#", ImageUrl = "fa-stuff")] 
public class StuffController : Controller {

    [MvcSiteMapNode(Title = "List", ParentKey = "stuff-key", Key = "stuff-list")]
    public ActionResult Index(){}

    [MvcSiteMapNode(Title = "Add", ParentKey = "stuff-key", Key = "stuff-add")]
    public ActionResult Add(){}
}

我的问题是,当我获取url / Stuff /时,未选择索引节点,而是仅选择了父节点(stuff-key)。 即使我GET / Stuff / Index发生的情况也一样。

这里有两个问题:

  1. 您刚刚发现了一个错误(谢谢),该错误允许在显式设置URL或不可单击节点时匹配路由值。
  2. 技术上不允许将字符“#”用作URL。 您可以,但这将具有转到“ /#”(主页)的效果,这可能不是您想要的。

我猜想第二个问题,您想使节点成为分组目的,在这种情况下,应使其不可单击。

[MvcSiteMapNode(Title = "Stuff", ParentKey = "root", Key = "stuff-key", Clickable = false, ImageUrl = "fa-stuff")] 

这使它为“材料”生成纯文本,而不是超链接。

<ul id="menu">
    <li>
        <a href="/" title="Home">Home</a>
    </li>
    <li>
        Stuff
        <ul>
            <li>
                <a href="/Stuff" title="List">List</a>
            </li>
            <li>
                <a href="/Stuff/Add" title="Add">Add</a>
            </li>
        </ul>        
    </li>
</ul>

但是,请注意,在我发布补丁之前,匹配问题不会消失。 因此,只有在高于4.5.1的版本可用时,它才可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM