Видимо, заголовок принимает значение ImageUrl
В моем классе DynamicNodeProviderBase настройте Title
и ImageUrl
DynamicNodeProviderBase
const string keyFormated = "Subsidiary_{0}";
// Create a node for each subsidiary
foreach (var subsidiary in listDB.ToList())
{
var node = new DynamicNode
{
Title = subsidiary.District,
Description = subsidiary.Title,
ImageUrl = Path.Combine(string.Format(Constants.RelativePathSubsidiary, subsidiary.ID.ToString().ToLower())),
Key = string.Format(keyFormated, subsidiary.District)
};
node.RouteValues.Add("id", subsidiary.ID);
node.Attributes.Add("LargeIconFileName", subsidiary.LargeIconFileName);
node.Attributes.Add("MediumIconFileName", subsidiary.MediumIconFileName);
node.Attributes.Add("SmallIconFileName", subsidiary.SmallIconFileName);
returnValue.Add(node);
}
// Return
return returnValue;
View
На мой взгляд, вызовите помощника, чтобы сгенерировать меню моей страницы.
Это меню настраивается с помощью DisplayTemplates
@Html.MvcSiteMap().Menu("sitemap-menu", true, true, false)
DisplayTemplates
В основном есть шаблоны DisplayTemplate для MenuHelperModel
и один для SiteMapNodeModel
.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '' * * '' * '' '' '' Очень просто] (просто вызовите помощника @DisplayFor
, передавая мой пользовательский шаблон), не поместит здесь свой код.
следующий код SiteMapNodeModel
@model SiteMapNodeModel
@{
object upper;
string title = Model.Title;
var imgUrl = Path.Combine(Model.ImageUrl, "Icons");
string iconFilename;
if (ViewData.TryGetValue("upper", out upper))
{
title = title.ToUpperInvariant();
}
if (Model.MetaAttributes.TryGetValue("SmallIconFileName", out iconFilename)
|| Model.MetaAttributes.TryGetValue("MediumIconFileName", out iconFilename)
|| Model.MetaAttributes.TryGetValue("LargeIconFileName", out iconFilename))
{
imgUrl = Path.Combine(imgUrl, iconFilename);
}
}
@if (Model.IsCurrentNode && Model.SourceMetadata["HtmlHelper"].ToString() != "MvcSiteMapProvider.Web.Html.MenuHelper")
{
<text>@title</text>
}
else if (Model.IsClickable && Model.ImageUrl != null)
{
<a href="@Model.Url" title="@Model.Title">
<img src="@Url.Content(imgUrl)" alt="@Model.Title"/>
<span>@title</span>
</a>
}
else
{
<text>@title</text>
}
Но значения неверны (или обмениваются).
Смотрите изображение отладки:
Debug
Смотрите полное изображение здесь
ПРИМЕЧАНИЕ. Красное описание неверно. Правильно: значение Title должно быть в свойстве ImageUrl!
Вопрос
Почему значение свойства ImageUrl
равно Title и почему TItle
пусто?