MvcSiteMapProvider에서 새로운 기능입니다. 불행히도 혼자서 대답을 찾을 수 없습니다. 나는 MVC4 및 MvcSiteMapProvider 내 질문 사용DynamicNodeProvider가 올바른 URL을 생성하지 않습니다.
이1) 링크 주문 (및 Buy-> 검색) 로컬 호스트 나 링크를하지만 로컬 호스트되어야한다/매수/검색
2) 링크 장난감/장난감 세부/1은 "구매"메뉴에 속하지 않습니다 (이 링크 메뉴에 도달하면 구매 -> 검색이 사라집니다). 미리 감사드립니다.
내 Mvc.sitemap :
<mvcSiteMapNode title="Home"
controller="Toy"
action="Index"
key="Home">
<mvcSiteMapNode title="Buy"
controller="Toy"
action="Search"
key="ToyBuy">
<mvcSiteMapNode title="Search"
controller="Toy"
action="Search"
key="ToySearch">
<mvcSiteMapNode title="Toy Search Result"
controller="Toy" action="Search-Result"
key="ToySearchResult">
<mvcSiteMapNode title="Toy Details"
controller="Toy"
action="Toy-Details"
key="ToyDetail" dynamicNodeProvider="MyToys.Web.DynamicNodeProviders.ToySearchDynamicNodeProvider,MyToys.Web"/>
</mvcSiteMapNode>
</mvcSiteMapNode>
<mvcSiteMapNode title="Publish" controller="Toy" action="Publish" description=""/>
<mvcSiteMapNode title="Published" controller="Toy" action="Published" key="ToyPublished" description="">
<mvcSiteMapNode title="Edit" controller="Toy" action="Edit"
preservedRouteParameters="id" key="ToyPublishedEdit" visibility="false" description=""/>
</mvcSiteMapNode>
및 ToySearchDynamicNodeProvider :
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
var rep = new ToyRepository();
foreach (var Toy in rep.Get())
{
DynamicNode dynamicNode = new DynamicNode();
dynamicNode.ParentKey = "ToySearchResult";
dynamicNode.RouteValues.Add("id", Toy.ID);
yield return dynamicNode;
}
}
그런데, 나는 또한 MenuHelperModel.cshtml를 다시 작성 :
<div class="hmenu">
<ul class="tabs">
@foreach (var node in Model.Nodes)
{
<li>@Html.DisplayFor(m => node)</li>
}
</ul>
</div>
@foreach (var node in Model.Nodes)
{
if (node.IsInCurrentPath)
{
if (node.Children.Any())
{
<div class="vmenu">
<ul class="tabs">
@foreach (var child in node.Children)
{
<li><a href="@child.Url">@child.Description</a></li>
}
</ul>
</div>
}
}
}
답변 해 주셔서 감사합니다. 정말 도움이됩니다. 질문의 보내기 부분을 살펴볼 수 있습니까?나는 코드를 보여주기 위해 대답으로 추가했다. – user1820916