Проблемы с использованием ImageUrl DynamicNodeProviderBase - PullRequest
1 голос
/ 04 февраля 2012

Видимо, заголовок принимает значение 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

Debug mode
Смотрите полное изображение здесь

ПРИМЕЧАНИЕ. Красное описание неверно. Правильно: значение Title должно быть в свойстве ImageUrl!

Вопрос

Почему значение свойства ImageUrl равно Title и почему TItle пусто?

1 Ответ

1 голос
/ 12 апреля 2012

Это было исправлено в версии 3.2.2. Во время процесса клонирования произошла ошибка, из-за которой ImageUrl неправильно сопоставил заголовок.

...