/ / MVC Site Map Provider ConfigurationErrorException: il file della mappa del sito non è valido - asp.net-mvc-4, devexpress

Provider di mappe del sito MVC ConfigurationErrorException: il file della mappa del sito non è valido - asp.net-mvc-4, devexpress

Ho ridotto la mappa del sito per vedere dove si trova il problema e anche in quel modo non posso.

<?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>

Secondo me:

@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()

Ho provato senza l'attributo chiave, mettendo l'url al posto del controller e dell'azione, niente funziona.

Alcune idee per favore

risposte:

1 per risposta № 1

Per come la vedo io, DevExpress non supporta l'implementazione del provider MVC SiteMap. Puoi usare semplicemente la vecchia mappa del sito. Se ti senti a tuo agio, collega il tuo menu DevExpress al file 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>

Ti lascia senza le funzionalità estese che offre l'implementazione MVC :(

Tuttavia, puoi fare qualche uso del menu (MenuSettings) evento ItemDataBound proprietà e allega il tuo gestore (ad esempio anonimo) per acquisire l'associazione predefinita. E poi aggiungi la tua gestione degli attributi personalizzati:

@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()