2010-11-26 5 views
2

MVC Webアプリケーションで次のようにするには、どのような方法が最適ですか?ASP.NET MVCでスタイルを適用するMVC MasterPage View

私はSite.Masterというビューを持っています(これは私のMasterPageビューです)。このビューの上部には5つのリンクがあり、メインのサイトナビゲーションとして機能します。私が欲しいもの

<ul> 
    <li><a href="">Home</a></li> 
    <li><a href="">Links</a></li> 
    <li><a href="">Contact Us</a></li> 
    ...etc 
</ul> 

は、ユーザーが現在閲覧しているサイトのどの部分に応じて、適切なテキストリンクをハイライト表示できるようにすることですので、彼らは、[お問い合わせ]ページを使用していた場合は、お問い合わせリンクマスターページビューには異なるCSSスタイルが適用されます。

Webフォームでは、各リンクがHyperLinkコントロールであり、MasterPageのコードの後ろにプロパティがあり、関連するCssStyleを各HyperLinkコントロールに割り当てます。

私はマスターページビューで同じことを達成する最良の方法は、今私はMVCを使用していますか?

答えて

4

私はおそらくそれらのメニューのリンクを生成し、現在のコントローラとアクションに基づいてますHTMLヘルパーは、アンカーにCSSクラスcurrentを適用します記述します。

public static MvcHtmlString MenuLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName 
) 
{ 
    string currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action"); 
    string currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller"); 
    if (actionName == currentAction && controllerName == currentController) 
    { 
     return htmlHelper.ActionLink(
      linkText, 
      actionName, 
      controllerName, 
      null, 
      new { 
       @class = "current" 
      }); 
    } 
    return htmlHelper.ActionLink(linkText, actionName, controllerName); 
} 

そして、私の見解では、このヘルパーを使います:

<ul> 
    <li><%= Html.MenuLink("Home", "Index", "Home") %></li> 
    <li><%= Html.MenuLink("Links", "Links", "Home") %></li> 
    <li><%= Html.MenuLink("Contact us", "Contact", "Home") %></li> 
</ul> 

そして、残っているすべては、強調表示するCSSファイルで、このcurrentクラスを定義することです:

.current { 
    ... 
} 
+0

こんにちはダーリン。これはほぼ完璧に動作します。私が持っている問題は、サイトのそれらのセクションの1つで、そのコントローラ(ArticleまたはLatestArticle)に対して2つの可能なアクションのうちの1つを介してそこに到達することです。私は、部分的なビューを介してサイトのこのセクションに移動するたびに、デフォルトの 'LatestArticle'アクションではなく 'Article'アクションを呼び出すサイト全体で使用する部分的なビューを持っています。 'Article'がactionNameパラメータとしてMenuLinkメソッドに渡されることはありません。助言がありますか? – marcusstarnes

+0

さて、ヘルパーメソッドのシグネチャを変更して、単一のアクションではなくアクションのリストを受け入れ、現在のアクションがこのリストの要素の1つと一致することを確認するだけです。 –

関連する問題