/ / MVC Site Map Provider ConfigurationErrorException: Plik mapy serwisu jest nieprawidłowy - asp.net-mvc-4, devexpress

MVC Site Map Provider ConfigurationErrorException: plik mapy serwisu jest nieprawidłowy - asp.net-mvc-4, devexpress

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 № 1

Tak, 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()