ASP.net MVC рдореЗрдВ MvcSiteMapProvider рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ
рдпрд╣ рдЖрд▓реЗрдЦ рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЗрдиреВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП MvcSiteMapProvider рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рд╕рд╛рдЗрдЯ рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ "рдмреНрд░реЗрдбрдХреНрд░рдВрдм" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рдореИрдВ
MVC рд╕рдВрдЧреАрдд рд╕реНрдЯреЛрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ MvcSiteMapProvider рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред
рд╕рд╛рдЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ
рдШрд░
рджреБрдХрд╛рди
рдЪрдЯреНрдЯрд╛рди
рдХрд╛рдо рдкрд░ рдкреБрд░реБрд╖реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдкрд░ рдкреБрд░реБрд╖реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛
рд░реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЖрдкрдХреЛ рд╕рд▓рд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рдХреНрд▓рд╛рд╕рд┐рдХ
рдЬрд╛рдЬ
...
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
MvcSiteMapProvider рдХреЗ рд╕реНрд░реЛрдд
Github , MS-PL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкрд░ рд╣реИрдВред
рдирдЧреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ (рджреЗрдЦреЗрдВ-> рдЕрдиреНрдп рд╡рд┐рдВрдбреЛ-> рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрдВрд╕реЛрд▓)
PM> рдЗрдВрд╕реНрдЯреЙрд▓-рдкреИрдХреЗрдЬ MvcSiteMapProvider
рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ / рдкреНрд░рджрд░реНрд╢рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдореИрдВрдиреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ
* .ascx рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ Mvc.sitemap рдФрд░ MvcSiteMapSchema.xsd рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ web.config рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛:
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true"> <providers> <clear /> <add name="MvcSiteMapProvider" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" siteMapFile="~/Mvc.Sitemap" securityTrimmingEnabled="true" cacheDuration="5" enableLocalization="true" scanAssembliesForSiteMapNodes="true" includeAssembliesForScan="" excludeAssembliesForScan="" attributesToIgnore="visibility" nodeKeyGenerator="MvcSiteMapProvider.DefaultNodeKeyGenerator, MvcSiteMapProvider" controllerTypeResolver="MvcSiteMapProvider.DefaultControllerTypeResolver, MvcSiteMapProvider" actionMethodParameterResolver="MvcSiteMapProvider.DefaultActionMethodParameterResolver, MvcSiteMapProvider" aclModule="MvcSiteMapProvider.DefaultAclModule, MvcSiteMapProvider" siteMapNodeUrlResolver="MvcSiteMapProvider.DefaultSiteMapNodeUrlResolver, MvcSiteMapProvider" siteMapNodeVisibilityProvider="MvcSiteMapProvider.DefaultSiteMapNodeVisibilityProvider, MvcSiteMapProvider" siteMapProviderEventHandler="MvcSiteMapProvider.DefaultSiteMapProviderEventHandler, MvcSiteMapProvider" /> </providers> </siteMap> </code>
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо Mvc.sitemap рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
<?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-3.0" xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0 MvcSiteMapSchema.xsd" enableLocalization="true"> <mvcSiteMapNode title="Home" controller="Home" action="Index"> <mvcSiteMapNode title="About" controller="Home" action="About"/> </mvcSiteMapNode> </mvcSiteMap>
рд╕рд╛рдЗрдЯ рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдореБрдЦреНрдп рддрддреНрд╡
mvcSiteMapNode xml рддрддреНрд╡ рд╣реИред рдЗрд╕рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рд╢реАрд░реНрд╖рдХ - рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЖрдЗрдЯрдо рдХрд╛ рдирд╛рдо
- рдХрдВрдЯреНрд░реЛрд▓рд░ - рдХрдВрдЯреНрд░реЛрд▓рд░, рд░реВрдЯ рд╕реЗ
- рдХреНрд░рд┐рдпрд╛ - рдХреНрд░рд┐рдпрд╛, рдорд╛рд░реНрдЧ рд╕реЗ
- рдХреНрд╖реЗрддреНрд░ - рдХреНрд╖реЗрддреНрд░ (area), рдорд╛рд░реНрдЧ рд╕реЗ
- рдбрд╛рдпрдиреЗрдорд┐рдХрдХреЛрдбрдкреНрд░реЛрд╡рд╛рдЗрдбрд░ - рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ рдЗрд╕ рдиреЛрдб рдХреЗ рдмрдЬрд╛рдп mvcSiteMap рд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ
- рджреГрд╢реНрдпрддрд╛ - рдиреЛрдб рдХреА рджреГрд╢реНрдпрддрд╛, рдХреЗрд╡рд▓ рд╕рд╛рдЗрдЯрдореИрдк рдпрд╛ рдХреЗрд╡рд▓ рдореЗрдиреВ рдпрд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк
рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рд╕рд╛рдЗрдЯ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдиреЛрдбреНрд╕ рдЬреЛрдбрд╝реЗ рд╣реИрдВ:
<?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-3.0" xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0 MvcSiteMapSchema.xsd" enableLocalization="true"> <mvcSiteMapNode title="Home" controller="Home" action="Index"> <mvcSiteMapNode title="Store" controller="Store" action="Index"> </mvcSiteMapNode> <mvcSiteMapNode title="Cart" controller="ShoppingCart" action="Index" /> <mvcSiteMapNode title="Admin" controller="StoreManager" action="Index" > </mvcSiteMapNode> </mvcSiteMapNode> </mvcSiteMap>
рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ 4 рдореБрдЦреНрдп рдкреГрд╖реНрда рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВред рдЕрдм рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдореИрдк рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдПрд▓реНрдмрдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
- рдЪрдЯреНрдЯрд╛рди
- рдХрд╛рдо рдкрд░ рдкреБрд░реБрд╖реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдкрд░ рдкреБрд░реБрд╖реЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛
- рд░реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЖрдкрдХреЛ рд╕рд▓рд╛рдо рдХрд░рддреЗ рд╣реИрдВ
- ...
- рдХреНрд▓рд╛рд╕рд┐рдХ
- рдЬрд╛рдЬ
- ...
рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдЧрддрд┐рд╢реАрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрд▓реНрдмрдо рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╕рд╛рдЗрдЯ рдХрд╛ рдирдХреНрд╢рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MvcSiteMapProvider рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рдиреЛрдбрдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд╣реИред рддреЛ, рдЪрд▓реЛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ рдЬреЛ рдХрд┐
DynamicNodeProviderBase рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдФрд░
GetDynamicNodeCollection рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдбреЗрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
public class StoreDynamicNodeProvider : DynamicNodeProviderBase { public MusicStoreEntities _db = new MusicStoreEntities(); public override IEnumerable<DynamicNode> GetDynamicNodeCollection() { var nodes = new List<DynamicNode>(); var items = _db.Genres.ToList(); foreach (var item in items) { DynamicNode node = new DynamicNode();
рдЕрдм рдЖрдкрдХреЛ Mvc.sitemap рдореЗрдВ рд╕реНрдЯреЛрд░ рдиреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<mvcSiteMapNode title="Store" controller="Store" action="Index"> <mvcSiteMapNode title="" controller="Store" action="Index" dynamicNodeProvider="MvcMusicStore.Infrastructure.StoreDynamicNodeProvider, MvcMusicStore"/> </mvcSiteMapNode>
рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрди
рдбрд╛рдпрдирд╛рдореЗрдиреЛрдбрдкреНрд░реЛрдЗрдбрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИ, рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рдиреЛрдбреНрд╕ рдХреЗ рдЬрдирд░реЗрдЯрд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдореЗрдиреВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЗрдВ рдмреНрд░реЗрдбрдХреНрд░рдВрдм рдЬреЛрдбрд╝реЗрдВ
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ / _Layout.cshtml рдЬреЛрдбрд╝реЗрдВ:
<div style="text-align: center;"> : @Html.MvcSiteMap().SiteMapPath() </div> @Html.MvcSiteMap().Menu(2, 1)
рдЕрдм рдмрд╛рдПрдВ рдореЗрдиреВ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рджреГрд╢реНрдп / рд╕рд╛рдЭрд╛ / рдбрд┐рд╕реНрдкреНрд▓реЗрдЯреЗрдореНрдкрд▓реЗрдЯ / рдореЗрдиреВрд╣реЗрд▓реНрдкрд░ рдореЛрдбрд▓.рдХреНрд▓реЗрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
<ul id="menu"> @foreach (var node in Model.Nodes) { <li style="@(node.IsInCurrentPath && !node.IsRootNode ? "text-decoration: underline;" : "")"> <a href="@node.Url">@node.Title</a> </li> } </ul>
рдЖрдкрдХреЛ рдирд┐рдореНрди рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:

рд╣рдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╛рдЗрдЯ рдкрд░ рдХреЗрд╡рд▓ рдкрде рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛ, рд▓реЗрдХрд┐рди рдмрд╛рдИрдВ рдУрд░ рдореЗрдиреВ рдирд╣реАрдВ рд╣реИред
рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
- рдлреЗрд╕рд▓рд┐рдлреНрдЯ рдПрд▓реНрдмрдо рдХрд╛ рд╕рдВрдкрд╛рджрди
- рдлреЗрд╕рд▓рд┐рдлреНрдЯ рдПрд▓реНрдмрдо рджреЗрдЦреЗрдВ
- рдлреЗрд╕рд▓рд┐рдлреНрдЯ рдПрд▓реНрдмрдо рд╣рдЯрд╛рдПрдВ
- рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдПрд▓реНрдмрдо рдХреЗ рд▓рд┐рдП
рдЗрд╕реА рддрд░рд╣ рд╕реНрдЯреЛрд░ рд╕реЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдбрд╛рдпрдиреЗрдорд┐рдХрдиреЛрдбрдкреНрд░реЛрд╡рд╛рдЗрдбрд░рдмреЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВред
public class AdminDynamicNodeProvider : DynamicNodeProviderBase { public MusicStoreEntities _db = new MusicStoreEntities(); public override IEnumerable<DynamicNode> GetDynamicNodeCollection() { var nodes = new List<DynamicNode>(); var items = _db.Albums.ToList(); foreach (var item in items) { var node=new DynamicNode() { Key="admin_album_edit_"+ item.AlbumId.ToString(), Action="Edit", Controller="StoreManager", Title=" "+item.Title }; node.RouteValues.Add("id", item.AlbumId); nodes.Add(node); node = new DynamicNode() { Key = "admin_album_delete_" + item.AlbumId.ToString(), Action = "Delete", Controller = "StoreManager", Title = " " + item.Title }; node.RouteValues.Add("id", item.AlbumId); nodes.Add(node); node = new DynamicNode() { Key = "admin_album_details_" + item.AlbumId.ToString(), Action = "Details", Controller = "StoreManager", Title = " " + item.Title }; node.RouteValues.Add("id", item.AlbumId); nodes.Add(node); } return nodes; } }
рдЗрд╕реА рддрд░рд╣, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдиреЛрдб рдмрджрд▓реЗрдВ:
<mvcSiteMapNode title="Admin" controller="StoreManager" action="Index" > <mvcSiteMapNode title="" controller="StoreManager" action="Index" dynamicNodeProvider="MvcMusicStore.Infrastructure.AdminDynamicNodeProvider, MvcMusicStore"/> <mvcSiteMapNode title="Create" controller="StoreManager" action="Create" /> </mvcSiteMapNode>
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдХрд▓реЗрдЧрд╛:

рд╣рдореЗрдВ рдореЗрдиреВ рдореЗрдВ рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдЗрдЯ рдкрд░ рдкрде рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Mvc.sitemap рдЖрд╡рд╢реНрдпрдХ nodah рдРрдб рд╡рд┐рд╢реЗрд╖рддрд╛
рджреГрд╢реНрдпрддрд╛ = ┬лSiteMapPathHelper ,! *┬╗ , рдФрд░ рдпрд╣ рдХрд╛рдо рдЕрдиреБрднрд╛рдЧ рдЬрд╣рд╛рдВ
┬лMvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider┬╗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдореВрд▓реНрдп Mvc.sitemap рдкрд░рд┐рд╡рд░реНрддрди
siteMapNodeVisibilityProvider рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ web.config рдореЗрдВ
рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдмрдирд╛рдиреЗ рдХреЗ
рд▓рд┐рдПредMvc.sitemap рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг:
<?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-3.0" xsi:schemaLocation="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0 MvcSiteMapSchema.xsd" enableLocalization="true"> <mvcSiteMapNode title="Home" controller="Home" action="Index" visibility=""> <mvcSiteMapNode title="Store" controller="Store" action="Index"> <mvcSiteMapNode title="" controller="Store" action="Index" dynamicNodeProvider="MvcMusicStore.Infrastructure.StoreDynamicNodeProvider, MvcMusicStore"/> </mvcSiteMapNode> <mvcSiteMapNode title="Cart" controller="ShoppingCart" action="Index" /> <mvcSiteMapNode title="Admin" controller="StoreManager" action="Index" > <mvcSiteMapNode title="" controller="StoreManager" action="Index" visibility="SiteMapPathHelper,!*" dynamicNodeProvider="MvcMusicStore.Infrastructure.AdminDynamicNodeProvider, MvcMusicStore"/> <mvcSiteMapNode title="Create" controller="StoreManager" visibility="SiteMapPathHelper,!*" action="Create" /> </mvcSiteMapNode> </mvcSiteMapNode> </mvcSiteMap>
рдЕрдм рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ:

рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИред