Asp.net mvc MvcSiteMap:未到达动态节点提供程序
我创建了一个使用属性定义节点的项目,并在web.config中将其设置为扫描属性,它工作正常。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"
我根本不使用XML文件 现在我想添加一个动态节点提供程序,我该怎么做?
有没有一种不用XML(.sitemap)文件就可以完成的方法?
我需要确保它位于根目录下,根目录已在代码中使用
mvcsitemanodeAttribute
属性设置
我已经读过了,我真的不知道该把这行放在哪里:
<mvcSiteMapNode
title="Details" action="Details"
dynamicNodeProvider="Project.StoreDetailsDynamicNodeProvider, Prject" />
您可以在控制器方法属性中定义它(而不使用XML)吗 例如:
[mvcsitemasnode(Title=“Details”,
DynamicNodeProvider=“Project.StoreDetailsDynamicNodeProvider,Project”)]
公共行动结果索引()
{
返回视图();
}
dynamicondeprovider
属性被忽略,在属性中定义时也是如此。因此,在根目录下添加动态节点提供程序的唯一方法是在虚拟操作等上指定它,或者使用XML李>
Order
属性进行控制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();
}