ฉันกำลังทำงานในโปรเจ็กต์ MVC5 ซึ่งฉันต้องสร้างแผนผังไซต์
ฉันได้สร้างเส้นทางของฉันโดยใช้แอตทริบิวต์เส้นทางในการดำเนินการของคอนโทรลเลอร์
ฉันกำลังใช้ผู้ให้บริการโหนดไดนามิกตามที่ระบุไว้ในเอกสารประกอบสำหรับ MvcSiteMapProvider และทำงานได้ดีสำหรับหนึ่งในคอนโทรลเลอร์ของฉัน แต่สำหรับอีกตัวควบคุมหนึ่งกำลังแสดงพารามิเตอร์สตริงการสืบค้นสำหรับแต่ละเส้นทางที่แมป
ฉันได้รับ
www.url.com?SelectedCulture=en-gb
เมื่อฉันคาดหวัง
www.url.com/en-gb
เส้นทางของฉันทำงานได้ดีทั้งหมด และหากฉันใช้แอปพลิเคชันของฉัน มันก็ทำงานได้ดีเช่นกัน... เพียงแต่ไม่ได้สร้างแผนผังไซต์ที่ฉันคาดหวังไว้
ผู้ให้บริการแบบไดนามิกที่ฉันสร้างขึ้นกำลังเติมแอตทริบิวต์ที่จำเป็นซึ่งตรงกับเส้นทาง
ใครมีความคิดใด ๆ ?
นี่คือ Mvc.sitemap xml ของฉัน
<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();
}
ขอบคุณ!