【问题标题】:MvcSiteMapProvider Menu with Filter Attributes in the Controller Class in Asp.Net Mvc 5Asp.Net Mvc 5中控制器类中带有过滤器属性的MvcSiteMapProvider菜单
【发布时间】:2014-02-27 21:57:51
【问题描述】:

我正在使用这个库: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 发生同样的情况。

【问题讨论】:

    标签: c# menu asp.net-mvc-5.1 mvcsitemapprovider


    【解决方案1】:

    这里有两个问题:

    1. 您刚刚发现了一个错误(感谢),它允许在明确设置 URL 或节点不可点击时匹配路由值。
    2. 字符“#”在技术上不允许作为 URL。可以,但这会产生转到“/#”(主页)的效果,这可能不是您想要的。

    我猜第二个问题是你想为分组目的创建一个节点,在这种情况下它应该是不可点击的。

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

    这使它为“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 以上的版本可用之前它不会正常工作。

    【讨论】:

    • “这使它为“Stuff”生成纯文本,而不是超链接”我认为这不会成为问题。我可能会在模板中修复它。
    • 4.5.2 版本已随补丁一起发布。修改模板以在不可点击的情况下输出锚点非常简单。不过,您可能还想使用自定义属性,因此它不会对每个不可点击的节点都这样做。
    猜你喜欢
    • 2010-09-15
    • 2013-10-23
    • 2017-08-13
    • 1970-01-01
    • 2010-11-13
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多