我正在使用MVCSiteMapProvider v4.6.22并为我的一个控制器提供动态节点提供程序。
类似的东西:
public class ProviderDetailsNodeProvider : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
foreach (var provider in providers)
{
var dn = new DynamicNode()
{
Title = provider.Name,
ParentKey = "ParentKey",
Key = $"provider_master_{provider.ID}",
CanonicalUrl = "/url/something"
};
dn.RouteValues.Add("myRouteParamName", "myRouteParamValue");
yield return dn;
}
}
}
如果不设置CanonicalKey
的{{1}}或CanonicalUrl
属性,我会得到正确的行为。但是我现在希望有多个URL指向相同的内容,因此我需要利用MVCSiteMapProvider的Canonical URL功能。
如果我尝试设置上面代码段中的DynamicNode
或CanonicalUrl
(我的首选),那么当我尝试使用辅助方法时,例如:
CanonicalKey
我得到@Html.MvcSiteMap().SiteMapPath()
- 它是NullReferenceException
,返回null。
我做错了什么,为什么我只是通过针对我的动态节点设置这些属性来获得此@Html.MvcSiteMap()
?
我在MVC6应用程序中使用NullReferenceException
包。我在Nuget上看不到更新的版本。