我缩小了站点地图以查看问题所在,甚至我不能这样做。
<?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而不是控制器和动作,没有任何作用。
请一些想法
答案 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()