【问题标题】:MVCSiteMapProvider doesn't display SiteMapPathMVCSiteMapProvider 不显示 SiteMapPath
【发布时间】:2014-03-21 17:58:01
【问题描述】:

我有一个简单的站点地图:

<mvcSiteMapNode title="Projects" controller="Projects" action="Index"> <!--This wraps the entire site since Projects Index is the homepage-->
    <mvcSiteMapNode title="Projects" controller="Projects" action="Index">
      <mvcSiteMapNode title="Project" controller="Projects" action="Details">
        <mvcSiteMapNode title="Session" controller="Session" action="DetailsNew" />
        <mvcSiteMapNode title="Edit Session" controller="Session" action="Edit" />
      </mvcSiteMapNode>
    </mvcSiteMapNode>
    <mvcSiteMapNode title="My Account" controller="Account" action="ChangePassword" />
    <mvcSiteMapNode title="Admin" controller="Admin" action="Index" >
      <mvcSiteMapNode title="Create User" controller="Admin" action="AddUser" />
      <mvcSiteMapNode title="Manage Users" controller="Admin" action="Users" />
    </mvcSiteMapNode>
  </mvcSiteMapNode>

当我在我的项目详细信息页面上输入@Html.MvcSiteMap().SiteMapPath() 时,没有显示任何内容。想法?

【问题讨论】:

    标签: model-view-controller asp.net-mvc-5 sitemap mvcsitemapprovider


    【解决方案1】:

    当您添加自定义路由值(“区域”、“控制器”或“动作”以外的值)时,您需要明确指定如何匹配它。

    默认情况下,您应该为每个潜在的路由键值创建一个节点。例如,如果您有一个名为“id”的路由键,并且您有 id 为“1”、“2”和“3”的记录,则需要为每个 id 创建一个节点。

    <mvcSiteMapNode title="Project 1" controller="Project" action="Details" id="1">
    <mvcSiteMapNode title="Project 2" controller="Project" action="Details" id="2">
    <mvcSiteMapNode title="Project 3" controller="Project" action="Details" id="3">
    

    您已经发现了替代方案,即使用preservedRouteParameters。这将使节点始终与路由键匹配,而不管其值如何,这通常是执行 CRUD 操作的管理页面的理想解决方案。

    <mvcSiteMapNode title="Edit Project" controller="Project" action="Edit" preservedRouteParameters="id">
    

    通常,当您这样做时,您必须稍微修正一下显示,因为在菜单上有一个编辑节点没有多大意义(您通常会从记录列表中选择编辑)以及当您选择它您通常希望节点显示您选择的记录。您可以使用FilteredSiteMapNodeVisibilityProviderSiteMapTitleAttribute 来执行此操作。

    有关如何设置一组 CRUD 操作的完整可下载演示,请参阅标题为 How to Make MvcSiteMapProvider Remember a User's Position 的博文。

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多