MvcSiteMapProvider仅在编辑mvc.sitemap mvc4时显示

时间:2014-01-28 10:22:11

标签: asp.net asp.net-mvc-4 mvcsitemapprovider

任何人都可以帮助我使用mvcsitemapprovider。站点地图上的面包屑拒绝显示,直到我编辑mvc.siemap文件并保存。然后它只会暂时显示面包屑,直到我离开页面并重新打开它。

我的设置..

<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0"
        xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0     
MvcSiteMapSchema.xsd">

<mvcSiteMapNode title="Dashboard" controller="Dashboard" action="Index">
<mvcSiteMapNode title="Customers" controller="Customers" action="Index">
  <mvcSiteMapNode title="Details" controller="Customers" action="Details"  />
  <mvcSiteMapNode title="Edit" controller="Customers" action="Edit" />   
</mvcSiteMapNode>
</mvcSiteMapNode>

1 个答案:

答案 0 :(得分:0)

从外观上看,您试图在管理页面上显示面包屑。建议的方法是使用savedRouteParameters强制每个“id”匹配节点,然后使用可见性提供程序和[TitleAttribute]在记录之间更改时修复显示并从主菜单中隐藏这些选项(通常是将首先导航到索引页面然后从数据库驱动列表中选择命令,因此它们不应出现在菜单中。

<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0"
        xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-4.0     
MvcSiteMapSchema.xsd">

<mvcSiteMapNode title="Dashboard" controller="Dashboard" action="Index">
<mvcSiteMapNode title="Customers" controller="Customers" action="Index">
  <mvcSiteMapNode title="Create New" controller="Customers" action="Create"  visibility="SiteMapPathHelper,!*" />
  <mvcSiteMapNode title="Details" controller="Customers" action="Details"  visibility="SiteMapPathHelper,!*" preservedRouteParameters="id">
    <mvcSiteMapNode title="Edit" controller="Customers" action="Edit" visibility="SiteMapPathHelper,!*" preservedRouteParameters="id" />
    <mvcSiteMapNode title="Delete" controller="Customers" action="Delete" visibility="SiteMapPathHelper,!*" preservedRouteParameters="id" />
  </mvcSiteMapNode>  
</mvcSiteMapNode>
</mvcSiteMapNode>

如果不使用savedRouteParameters,它们应该出现的事实不应该发生。这可能是一个错误或错误配置,但没有关于您的配置的更多细节,很难说。

您可以在How to Make MvcSiteMapProvider Remember a User's Position看到完整的可下载演示(请参阅强制匹配项目)。请务必在维基上查看有关visibilitytitle attribute的文档。