我有一个从数据库加载其基本节点的面包屑(感谢 nightowl 的帮助!)。为了实现这个功能,我实现了一个实现“ISiteMapNodeProvider”的“CustomSiteMapNodeProvider”。面包屑现在适用于来自数据库的节点。现在我想添加动态节点作为来自数据库的一些节点的子节点。我的第一个冲动是使用 MvcSiteMapNodeAttribute。
[MvcSiteMapNodeAttribute(Title = "Execute", Area = "MyArea", DynamicNodeProvider = "My.Namespace.MyDynamicNodeProvider, My.Assembly", Clickable = false, ParentKey="KeyOfParentDbNode")]
public ActionResult Execute(Guid id, MyViewModel vm){
return View(vm)
}
但这不起作用,“MyDynamicNodeProvider”中的断点在启动时被击中,但是当我调用“Execute”方法时没有显示面包屑。
这是我的 DynamicNodeProvider 的样子:
public class ProfileDynamicNodeProvider
: DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
ProfileDao dao = DependencyResolver.Current.GetService<ProfileDao>();
// Create a node for each element
foreach (Profile profile in dao.GetAll())
{
DynamicNode dynamicNode = new DynamicNode
{
Title = profile.Name,
//Key = "Profile_"+profile.IdProfile,
ParentKey = "KeyOfParentNode",
};
dynamicNode.RouteValues.Add("id", profile.IdProfile);
yield return dynamicNode;
}
}
}
我能做些什么来完成这项工作?
编辑:可能是它们以错误的顺序处理吗?在到达 CustomSiteMapNodeProvider 的断点之前,我到达了 DynamicNodeProvider 的断点。