Saya sedang mengerjakan proyek MVC5 di mana saya perlu membuat peta situs.
Saya telah membuat rute saya menggunakan Atribut Rute pada tindakan pengontrol.
Saya menggunakan penyedia simpul Dinamis seperti yang ditentukan dalam dokumentasi untuk MvcSiteMapProvider dan berfungsi dengan baik untuk salah satu pengontrol saya, namun untuk pengontrol lainnya ia menampilkan parameter string kueri untuk setiap rute yang dipetakan jadi misalnya
saya mengerti
www.url.com?SelectedCulture=en-gb
ketika aku mengharapkannya
www.url.com/en-gb
Semua rute saya berfungsi dengan baik dan jika saya menggunakan aplikasi saya, itu juga berfungsi dengan baik... Itu tidak membuat peta situs yang saya harapkan
Penyedia Dinamis yang saya buat sedang mengisi atribut yang diperlukan yang cocok dengan rute.
Adakah yang punya ide?
Ini adalah Mvc.sitemap xml saya
<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;
}
}
}
}
Dan inilah Tindakan Pengontrol saya:
[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();
}
Terima kasih!