0

我缩小了站点地图以查看问题出在哪里,即使那样我也做不到。

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

我尝试不使用 key 属性,使用 url 而不是控制器和操作,但没有任何效果。

请给一些想法

4

1 回答 1

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 实现提供的扩展功能:(

但是,您可以使用 menu ( 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()
于 2014-04-29T10:20:18.430 回答