1

我使用 MVC Contrib 项目为 MVC 站点生成我的菜单系统。

如何<a href根据您的 SiteMap 在您的标签中生成属性。我设法通过在我的 web.config 中指定attributesToIgnore="target"我的提供程序定义并将属性添加到我的站点地图文件中的 mvcSiteMapNode 元素来实现这一点。

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

然后我遍历我的 SiteMap 文件选择的属性使用

siteMapNode["target"]

并将其自己渲染为<a href="#" target="_blank" > </a>. 有一个更好的方法吗?

4

1 回答 1

1

您是否尝试过创建 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 时,它会自动使用这个模板。

于 2011-06-23T21:23:53.923 回答