targetFrame _blank MVSiteMapCOntrib

发布于 2024-11-16 02:16:32 字数 666 浏览 3 评论 0 原文

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

如何根据 SiteMap 在 标记中生成属性。我通过在 web.config 的提供程序定义中指定 attributesToIgnore="target" 并将该属性添加到站点地图文件中的 mvcSiteMapNode 元素来成功实现此目的。

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

然后,我使用 SiteMap 文件选择属性进行迭代

siteMapNode["target"]

,并将其渲染为 。有更好的方法吗?

Im using the MVC Contrib project to generate my menu system for an MVC site.

How does one generate attributes in your <a href tag based on your SiteMap. Ive managed to achieve this by specifying the attributesToIgnore="target" in my provider definition in my web.config and adding the attribute to my mvcSiteMapNode element in my sitemap file.

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

I then iterate through my SiteMap file pick of the attribute using

siteMapNode["target"]

and render it myself as <a href="#" target="_blank" > </a>. Is there a better way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

胡大本事 2024-11-23 02:16:32

您是否尝试过创建 SiteMapNodeModel 显示模板?这使您可以按照自己的意愿构建锚标记。如果节点位于当前路径中,我创建了一个专门向锚添加一个类,以便我可以应用特定的 CSS。

这是我使用的 razor 部分视图:

@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”(razor)的文件位于 Shared/DisplayTemplates 中。当 asp.net Mvc 渲染 SiteMapNodelModel 时,它将自动使用此模板。

Have you tried creating a SiteMapNodeModel display template? That allows you to construct your anchor tag however you wish. I created one to specifically add a class to the anchor if the node was in the current path so that I could apply specific CSS.

Here is the razor partial view I use:

@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
    }

}

The file, named "SiteMapNodeModel.cshtml" (razor) goes in Shared/DisplayTemplates. When asp.net Mvc rendors a SiteMapNodelModel it will automatically use this template.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文