2014-02-25 3 views
0

MvcSiteMapProvider를 처음 사용했습니다. 기본 사항을 완료했으며 이동 경로를 설정하려면 mvc.sitemap xml을 설정해야한다는 것을 알고 있습니다.MvcSiteMapProvider - 동적 노드 이해

이제 링크 클릭으로 동적 노드를 추가하고 싶습니다. 예 : 카테고리 표에서 Apple : 전화를 클릭합니다. 휴대 전화> Apple 표시 할 수있게하고 싶습니다. 나는 사방이 방법을 보았다 지금까지

:

public class FBDynamicNodeProvider : DynamicNodeProviderBase 
{   
    public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode mapnode) 
    { 
     var returnValue = new List<DynamicNode>(); 
     DynamicNode node = new DynamicNode(); 
     node.Title = "Nodedummytitle"; 
     node.Controller ="Phones"; 
     node.Action = "Index"; 
     node.RouteValues.Add("id", 1); 
     node.ParentKey = "PhonesCategory"; 
     node.Key = "PhonesList"; 
     returnValue.Add(node); 

     return returnValue; 
    } 
} 

하지만 난 정말이 작업을 진행하는 방법을 이해하지 못한다. 디버깅을 시도했지만 getdynamicnodecollection 메서드가 호출되지만 breadcrumbs가 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 누군가가 이것을 달성하는 데 도움이 될 예제 링크를 공유 할 수 있습니까?

편집 1 : 나는 나의 웹 사이트/sitemap.xml의에 무엇인지 파악하여이를 해결했다. 빵 부스러기가 생성되었지만 틀린 uri 때문에 표시되지 않았습니다. 필자가해야하는 것은 URI를 내 XML과 비슷하게 만드는 것이고 매력처럼 작동했습니다.

지금 나는 내 자신의 질문을 내 SO Question's here과 같이 해결할 때 어떻게해야할지 모르는 문제에 봉착했습니다.

안내해주세요. 감사합니다.

답변

0

우선, "동적 노드"라는 용어는 약간 오도하는 것입니다. 노드는 동적이지 않으며, 잠재적 인 동적 데이터 소스를 기반으로하는 정적 노드입니다. 즉, 응용 프로그램 시작시 (그리고 캐시가 만료 될 때마다) 공유 캐시에로드되고 저장됩니다. 그러나 파일이나 데이터베이스와 같은 외부 소스를 기반으로 할 수 있습니다.

둘째, 노드의 일치 동작은 달성하기 위해 어느 정도 이해가 필요한 것입니다. 일치시킬 사용자 지정 매개 변수가없는 경로를 얻는 것은 매우 간단하지만 경로에 "id"또는 다른 사용자 지정 키를 추가 할 때는 노드의 RouteValues ​​사전에 추가하여 "현재 노드"를 결정해야합니다. 기본적으로 각 "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"> 

데이터를 편집하는 관리 페이지로 가짜 빵 부스러기를 만들고 싶다면 다른 옵션이 있습니다. 이렇게하면 값에 상관없이 노드가 항상 경로 키와 일치하게됩니다. 이는 일반적으로 CRUD 작업을 수행하는 관리 페이지에 대한 이상적인 솔루션입니다.

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

이러한 옵션에 대한 자세한 내용은 How to Make MvcSiteMapProvider Remember a User's Position 게시물을 참조하십시오.

관련 문제