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

コントローラーとアクションの代わりに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実装が提供する拡張機能がありません:(

ただし、メニュー ( 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 に答える