-1

私はかみそりでasp.net mvc 3に取り組んでいます。プロジェクトにレイアウト (マスター) ページがあります。これには、4 つのリンクとビューページ (@RenderBody) の場所を含むサイド パネルが含まれています。ユーザーがlink1をクリックするとviewpage1にリダイレクトされ、link1が選択され、link2をクリックするとviewpage2にリダイレクトされ、link2が選択されます。必要なページに非常にうまくリダイレ​​クトされますが、link2、link3、link4 をクリックしても、常に link1 のみが選択されます。個々のビューページからレイアウト ページの適切なリンクを選択するにはどうすればよいですか。教えて。

4

1 に答える 1

0

selectedとは、 CSS を使用して強調表示することを意味していると思いますね。この場合、これらのリンクを生成するカスタム HTML ヘルパーを作成することをお勧めします。

public static IHtmlString MenuItem(
    this HtmlHelper htmlHelper, 
    string text,
    string action, 
    string controller
)
{
    var li = new TagBuilder("li");
    var routeData = htmlHelper.ViewContext.RouteData;
    var currentAction = routeData.GetRequiredString("action");
    var currentController = routeData.GetRequiredString("controller");
    if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
        string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
    {
        li.AddCssClass("active");
    }
    li.InnerHtml = htmlHelper.ActionLink(text, action, controller).ToHtmlString();
    return new HtmlString(li.ToString());
}

次に、レイアウト内でヘルパーを使用します。

<ul>
    @Html.MenuItem("link 1", "Action1", "Controller1")
    @Html.MenuItem("link 2", "Action2", "Controller2")
    ...
</ul>

.activeあとは、CSS クラスでルールを定義するだけです。

.active {
    ... something fancy to pop the currently selected link from the others
}
于 2012-07-10T07:07:57.883 に答える