targetFrame _blank MVSiteMapCOntrib - PullRequest
       31

targetFrame _blank MVSiteMapCOntrib

1 голос
/ 17 июня 2011

Я использую проект MVC Contrib для создания системы меню для сайта MVC.

Как генерировать атрибуты в вашем теге <a href на основе вашего SiteMap. Мне удалось добиться этого, указав attributesToIgnore="target" в определении моего провайдера в моем web.config и добавив атрибут в мой элемент mvcSiteMapNode в моем файле карты сайта.

<mvcSiteMapNode title="Hello World"
                    controller="Home"
                    action="Index"
                    changeFrequency="Always"
                    updatePriority="Normal"
                    target="_blank">
</mvcSiteMapNode>

Затем я повторяю выбор файла атрибута SiteMap, используя

siteMapNode["target"]

и представьте его себе как <a href="#" target="_blank" > </a>. Есть лучший способ сделать это?

1 Ответ

1 голос
/ 24 июня 2011

Вы пытались создать шаблон отображения SiteMapNodeModel? Это позволяет вам создать свой якорный тег так, как вы пожелаете. Я создал один, чтобы специально добавить класс к привязке, если узел находился в текущем пути, чтобы я мог применить определенный CSS.

Вот частичный вид бритвы, который я использую:

@model MvcSiteMapProvider.Web.Html.Models.SiteMapNodeModel
@{   
    if (Model.IsCurrentNode && Model.SourceMetadata["HtmlHelper"].ToString() !="MvcSiteMapProvider.Web.Html.MenuHelper")
{
        @Model.Title    
    }
    else if (Model.IsClickable)
    {
        <a href="@Model.Url" class="@(Model.IsInCurrentPath ? "current" : string.Empty)" target="@Model.TargetFrame" >@Model.Title</a>
    }
    else
    {
    @Model.Title
    }

}

Файл с именем «SiteMapNodeModel.cshtml» (бритва) помещается в Shared / DisplayTemplates. Когда asp.net Mvc передает SiteMapNodelModel, он автоматически использует этот шаблон.

...