2011-06-17 7 views
1

MVC Contribプロジェクトを使用して、MVCサイトのメニューシステムを生成します。targetFrame _blank MVSiteMapCOntrib

<a hrefタグの属性は、サイトマップに基づいてどのように生成されますか。私はweb.configのプロバイダ定義にattributesToIgnore="target"を指定し、サイトマップファイルのmvcSiteMapNode要素に属性を追加することで、これを達成できました。

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

私はその後

siteMapNode["target"] 

を使用して属性の私のサイトマップファイルのピックを反復処理し、<a href="#" target="_blank" > </a>としてそれを自分自身をレンダリングします。これを行うより良い方法はありますか?

+0

あなたのコードをもう少し提供して、試みていることを複製しようとすることができますか? web.configでプロバイダをどのように設定していますか?あなたのコントローラーやビューには何がありますか? – Vito

+0

Hey @Vito元の質問にいくつかの追加情報を追加しました。 – Jonathan

答えて

1

SiteMapNodeModel表示テンプレートを作成しましたか?そうすれば、アンカータグを作成することができます。特定のCSSを適用できるように、ノードが現在のパスにある場合は、具体的にクラスをアンカーに追加するために作成しました。 "SiteMapNodeModel.cshtml"(かみそり)という名前のファイルには、共有/ DisplayTemplatesに行く

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

} 

:ここ

は、私が使用かみそり部分図です。 asp.net MVCがSiteMapNodelModelをレンダリングすると、自動的にこのテンプレートが使用されます。

+0

!それは私が探していたことです、それは剃刀なしでこれを行うことは可能ですか?代わりにSiteMapHelperModel.ascxファイルを使用しますか? – Jonathan

+0

はい、デフォルトのビューエンジン構文(* x)を使用することは可能です。 MvcSiteMapProviderに付属の例では、この構文を使用しています。これを私のプロジェクトに使用しているので、これを剃刀に変換しました。 – Dave

+0

ありがとう、あなたのポストのおかげで、しばらく後にそれを分かった、担当者の50ポイントの価値が... – Jonathan

関連する問題