Asp.net mvc MvcSiteMap:未到达动态节点提供程序

Asp.net mvc MvcSiteMap:未到达动态节点提供程序,asp.net-mvc,mvcsitemapprovider,asp.net-mvc-sitemap,Asp.net Mvc,Mvcsitemapprovider,Asp.net Mvc Sitemap,我创建了一个使用属性定义节点的项目,并在web.config中将其设置为扫描属性,它工作正常。 我根本不使用XML文件 现在我想添加一个动态节点提供程序,我该怎么做? 有没有一种不用XML(.sitemap)文件就可以完成的方法? 我需要确保它位于根目录下,根目录已在代码中使用mvcsitemanodeAttribute属性设置 我已经读过了,我真的不知道该把这行放在哪里: <mvcSiteMapNode title="Details" action="Details"

我创建了一个使用属性定义节点的项目,并在web.config中将其设置为扫描属性,它工作正常。
我根本不使用XML文件

现在我想添加一个动态节点提供程序,我该怎么做?
有没有一种不用XML(.sitemap)文件就可以完成的方法?
我需要确保它位于根目录下,根目录已在代码中使用
mvcsitemanodeAttribute
属性设置

我已经读过了,我真的不知道该把这行放在哪里:

<mvcSiteMapNode
  title="Details" action="Details"              
  dynamicNodeProvider="Project.StoreDetailsDynamicNodeProvider, Prject" />

您可以在控制器方法属性中定义它(而不使用XML)吗

例如:

[mvcsitemasnode(Title=“Details”,
DynamicNodeProvider=“Project.StoreDetailsDynamicNodeProvider,Project”)]
公共行动结果索引()
{
返回视图();
}
  • 似乎根节点中的
    dynamicondeprovider
    属性被忽略,在属性中定义时也是如此。
    因此,在根目录下添加动态节点提供程序的唯一方法是在虚拟操作等上指定它,或者使用XML
  • 一个有趣的注意事项:在XML中定义和在属性中定义之间的实际区别是,如果在属性中定义,它(即gen.菜单项)将是菜单中的最后一个,而在XML中定义时,它将位于根项之后(我想那将是Home),请注意,这仍然可以通过属性中的
    Order
    属性进行控制
  • 在我的Web.Config中,我将
    siteMapFile
    保留为空,依赖于它在页面中所说的,默认值是
    ~/Web.sitemap
    ,事实上这是错误的(我已经在更新的文档中更正了它)。
    我不认为这种行为应该是这样的,我确实认为MvcSiteMap引擎应该扫描动态节点提供程序,就像它扫描动态节点属性一样(我在网站上发布)

  • 你有没有按照文件的详细说明去做?@maghtymuke我以前看过。问题更新。看看这个(半相关的)问题-它可能会给出一些提示:很抱歉,上面的评论不是那么好(这里是凌晨3点)。我快速浏览了一下,没有XML文件中的sitemap节点,您似乎无法做到这一点,因为它提供了节点模板和对动态节点提供程序的引用。然而,我以前从未使用过动态节点,所以很可能是错误的。@Mightymuke,我说过我不介意使用XML。问题是根菜单(和其他菜单)都是在属性中定义的,所以我不知道在XML文件中写什么。它不起作用。我错过什么了吗?我应该将该属性放置在哪个控制器上?你能解释一下它是怎么工作的吗?我错过什么了吗?我在问题中添加了一个示例,请查看。感谢我以前从未使用过
    dynamicodeProvider
    ,但我很快会看一看,看看是否可以在您的设置中使用它。由于您的努力以及在
    mvcsitemanodeAttribute
    中找到
    dynamicodeProvider
    属性,我将获得奖金。我不知道。太棒了-很高兴你解决了。好吧,反正半解决了。
    [MvcSiteMapNode(Title = "Home", Key = HomeMenuKey,
      DynamicNodeProvider = "Project.Namespace.NodeProvider, Assembly")]
    public ActionResult Index()
    {
      return View();
    }