MVC站点地​​图提供程序ConfigurationErrorException:站点地图文件无效

时间:2013-05-14 20:28:16

标签: asp.net-mvc-4 devexpress

我缩小了站点地图以查看问题所在,甚至我不能这样做。

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

在我看来:

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

我试过没有键属性,把url而不是控制器和动作,没有任何作用。

请一些想法

1 个答案:

答案 0 :(得分:1)

我看到它的方式,DevExpress不支持MVC SiteMap提供程序实现。 您可以使用普通的旧站点地图。如果您对此感到满意,请将您的DevExpress菜单绑定到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>

它使您没有MVC实现提供的扩展功能:(

但是,您可以使用菜单(MenuSettings)事件ItemDataBound属性并附加您自己的(例如匿名)处理程序来捕获默认绑定。然后添加自己的自定义属性处理:

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