例如,如果我的动态节点被称为“人员详细信息”,则面包屑在“人员详细信息”页面上显示如下:
Home > People > Person Details
但是当我进一步浏览页面时,说“联系人”,面包屑看起来像这样:
Person Details > Contact Person
没有前两条路径.此外,如果我尝试导航回“人员详细信息”,则不会保留任何url参数(例如,不是转到http://localhost:55555/Home/People/PersonDetails?id=12,而是转到http://localhost:55555/Home/People/PersonDetails).
当我尝试使用HTML.MvcSiteMap().SiteMap()显示整个站点地图时,它会输出正确的层次结构直到动态节点.站点地图为动态节点提供程序中的每个“Person”节点列出一个唯一节点,但不显示动态节点的任何子节点.
我的站点地图看起来像这样(缩写):
<?xml version="1.0" enCoding="utf-8" ?><mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-file-3.0" enableLocalization="true"> <mvcSiteMapNode title="Home" controller="Home" action="Index"> <mvcSiteMapNode title="People" controller="information" action="People"> <mvcSiteMapNode title="Person Details" controller="information" action="PersonDetails" dynamicNodeProvIDer="MySite.Code.PersonDetailsDynamicNodeProvIDer,MySite"> <mvcSiteMapNode title="Contact Person" controller="information" action="Contact" /> </mvcSiteMapNode> </mvcSiteMapNode> </mvcSiteMapNode></mvcSiteMap>
我的动态节点提供程序如下所示:
public class PersonDetailsDynamicNodeProvIDer : DynamicNodeProvIDerBase{ List<Person> people = proxy.GetPeople(); public overrIDe IEnumerable<DynamicNode> GetDynamicNodeCollection() { var nodes = new List<DynamicNode>(); foreach (var person in people) { DynamicNode node = new DynamicNode(); node.RouteValues.Add("ID",person.ID); nodes.Add(node); } return nodes; } static private PersonServiceClIEnt proxy = new PersonServiceClIEnt();}
有什么我想念的吗?我感觉我刚刚离开了一些东西,但我对网络开发很新,而且在这一点上真的只是在黑暗中刺伤.
解决方法 您不需要动态节点提供程序.<mvcSiteMapNode title="Person Details" controller="information" action="PersonDetails" preservedRouteParameters="ID"> <mvcSiteMapNode title="Contact Person" controller="information" action="Contact" /></mvcSiteMapNode>
适合你正在做的事情.
总结以上是内存溢出为你收集整理的c# – MvcSiteMapProvider – 动态节点的子节点不会显示在面包屑或站点地图中全部内容,希望文章能够帮你解决c# – MvcSiteMapProvider – 动态节点的子节点不会显示在面包屑或站点地图中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)