我创建了一个项目,使用属性定义节点,我在 web.config 中设置它来扫描属性,它工作正常。
我根本不使用XML文件。
现在我想添加动态节点提供程序,我该怎么做?
有没有办法在没有XML( .sitemap )文件的情况下做到这一点?
我需要确保它位于根目录下,使用MvcSiteMapNodeAttribute
属性在代码中设置。
我已阅读documentation而我无法确定将这一行放在哪里:
<mvcSiteMapNode
title="Details" action="Details"
dynamicNodeProvider="Project.StoreDetailsDynamicNodeProvider, Prject" />
它应该指向什么行动?另外如上所述,root元素是使用属性定义的,所以我的问题是是否有一种方法可以避免使用XML,或者说,有效的方式来声明XML(越少越好)包含我的动态提供者。
我尝试过以下操作,但仍未找到节点提供程序( From HomeController.cs )。
[MvcSiteMapNode(Title = "Home", Key = HomeMenuKey,
DynamicNodeProvider = "Project.Namespace.NodeProvider, Assembly")]
public ActionResult Index()
{
return View();
}
答案 0 :(得分:1)
你能在控制器方法属性中定义它(根本不使用XML)吗?
例如:
[MvcSiteMapNode(Title="Details",
DynamicNodeProvider = "Project.StoreDetailsDynamicNodeProvider, Project")]
public ActionResult Index()
{
return View();
}
答案 1 :(得分:1)
dynamicNodeProvider
属性,也就是在属性中定义它时。
因此,在根目录下添加动态节点提供程序的唯一方法是通过在虚拟操作等上指定它或使用XML。 Order
属性进行控制。siteMapFile
留空,依赖于它在wiki页面中的说法,默认值为~/Web.sitemap
,实际上这是假的(我已经在更新的wiki)中更正过了
我不认为这种行为应该是这样的,我认为MvcSiteMap引擎应该扫描动态节点提供程序,就像它扫描动态节点属性一样(我在网站上发布了here is the issue)。