Я работаю над проектом MVC5, где мне нужно создать карту сайта.
Я создал свои маршруты, используя атрибут маршрута в действиях контроллера.
Я использую поставщика динамических узлов, как указано в документации для MvcSiteMapProvider, и он отлично работает для одного из моих контроллеров, однако для другого он отображает параметры строки запроса для каждого сопоставленного маршрута, например
я осознаю
www.url.com?SelectedCulture=ru-ru
когда я ожидаю
www.url.com/ru-ru
Все мои маршруты работают нормально, и если я использую свое приложение, оно также работает нормально ... Он просто не создает карту сайта, которую я ожидаю
Созданный мной динамический провайдер заполняет обязательный атрибут, соответствующий маршруту.
У кого-нибудь есть идеи?
Это мой XML-файл Mvc.sitemap
<mvcSiteMapNode title="ATitle" controller="Parent" action="Index" key="Home">
<mvcSiteMapNode title="ASubTitle" controller="Parent" action="Index" key="CulturePages">
</mvcSiteMapNode>
This is my dynamicNodeProvider
public class SitePagesDynamicProvider : DynamicNodeProviderBase
{
public override IEnumerable<DynamicNode> GetDynamicNodeCollection(ISiteMapNode node)
{
using (var ef = new EntityFrameworkRepository())
{
// Create a node for each sites
foreach (var obj in ef.GetIDs();
{
DynamicNode dynamicNode;
dynamicNode = new DynamicNode();
dynamicNode.Title = obj.title;
dynamicNode.ParentKey = "CulturePages";
dynamicNode.RouteValues.Add("SelectedCulture", obj.culture);
yield return dynamicNode;
}
}
}
}
А это мое действие контроллера:
[MvcSiteMapNodeAttribute(Title = "Sites", Key = "Sites", ParentKey = "HomePages", DynamicNodeProvider = "TestProject.Models.SitePagesDynamicProvider, TestProject")]
[Route("{SelectedCulture:regex(^([a-z]|[A-Z]){2}-([a-z]|[A-Z]){2}?$)?}/")]
public ActionResult Index(string SelectedCulture)
{
return View();
}
Спасибо!