Zmniejszyłem mapę witryny, aby zobaczyć, gdzie jest problem, a nawet w ten sposób, nie mogę.
<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0"
enableLocalization="true">
<mvcSiteMapNode key="0" title="BPM" controller="OEE" action="StationCycleTime">
<mvcSiteMapNode key="1" title="LiveOEE" controller="OEE" action="LiveOEE">
</mvcSiteMapNode>
</mvcSiteMapNode>
</mvcSiteMap>
Według mnie:
@Html.DevExpress().Menu(
settings =>
{
settings.Name = "Mvc";
settings.AllowSelectItem = true;
settings.EncodeHtml = false;
settings.Orientation = System.Web.UI.WebControls.Orientation.Horizontal;
settings.Width = 100;
}).BindToSiteMap("~/Mvc.sitemap", false).GetHtml()
Próbowałem bez kluczowego atrybutu, umieszczając adres URL zamiast kontrolera i akcji, nic nie działa.
Kilka pomysłów proszę
Odpowiedzi:
1 dla odpowiedzi № 1Tak, jak to widzę, DevExpress nie obsługuje implementacji MMC SiteMap. Zamiast tego możesz użyć zwykłej starej mapy witryny. Jeśli to ci się podoba, powiąż menu DevExpress z plikiem SiteMap:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode title="BPM" url="OEE/StationCycleTime">
<siteMapNode title="LiveOEE" url="OEE/LiveOEE" />
</siteMapNode>
</mvcSiteMap>
Pozostawia Cię bez rozszerzonej funkcjonalności, którą oferuje MVC :(
Można jednak skorzystać z menu (MenuSettings
) wydarzenie ItemDataBound
właściwość i dołącz swoją własną (np. anonimową) procedurę obsługi do przechwytywania domyślnego powiązania. A następnie dodaj własną obsługę atrybutów niestandardowych:
@Html.DevExpress().Menu(
settings =>
{
settings.Name = "Mvc";
settings.AllowSelectItem = true;
settings.EncodeHtml = false;
settings.Orientation = System.Web.UI.WebControls.Orientation.Horizontal;
settings.Width = 100;
settings.ItemDataBound = (sender, e) =>
{
var node = e.Item.DataItem as SiteMapNode;
if (node != null)
{
if (!string.IsNullOrEmpty(node["key"]))
{
// Do something with your lookup key
}
}
};
}).BindToSiteMap("~/Mvc.sitemap", false).GetHtml()