Kiemelés az aktív nézet MVC2?

szavazat
0

Oké, oldalamon www.kristianbak.com .

Van egy css osztály nevezett activebutton. Azt akarom, hogy ez megváltozzon, amikor egy másik nézet aktív. Jelenleg ez csak kódolva a HTML (sitemaster).

Bárki, aki jó ötlet?

A kérdést 12/06/2011 13:16
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
5

Lehet tesztelni a jelenlegi cselekvési és egyezés esetén egy CSS osztály:

<% if (ViewContext.RouteData.GetRequiredString("action") == "About") { %>
    ... highlight here
<% } %>

Még jobb írnék egy HTML helper generálni a menü:

public static MvcHtmlString 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 MvcHtmlString.Create(li.ToString());
}

és utána azt, mint ez:

<ul>
    <%= Html.MenuItem("Home", "Home", "Home") %>
    <%= Html.MenuItem("About Me", "About", "Home") %>
    <%= Html.MenuItem("My Work", "Work", "Home") %>
    <%= Html.MenuItem("Blog", "Index", "Blog") %>
    ...
</ul>

Ez növeli a activeosztály a horgonyt, ha az aktuális kérés megfelel a cselekvés és a vezérlő a link.

Válaszolt 12/06/2011 13:21
a forrás felhasználó

szavazat
0

A módszer általam kidolgozott köszönhetően ezt a bejegyzést:

http://geekswithblogs.net/bdiaz/archive/2010/04/09/handy-asp.net-mvc-2-extension-methods-ndash-where-am-i.aspx

meglehetősen hasonló. Azonban a válasz már egy nagy probléma. Tegyük fel, hogy van 3 link: Otthon , Mintegy és Kapcsolat .

Jelenleg 4 vezérlők alapértelmezett Index intézkedéseket. HomeController , AboutController , ContactController és BiographyController .

Most, a Névjegy oldal tartalma van linket Életrajz oldalt, amely felhívja Index fellépés Életrajz vezérlő.

Ugyanakkor kattintva az életrajz linket szeretnék fenntartani Névjegy oldalt választani, mert ez egy része a „Névjegy” részében.

A legtöbb megoldás, hogy én találtam az interneten nem terjednek ki ezt a fontos bit.

Megoldás fejlesztettem nem kell használni üléseken vagy valami büdös kódot Views. Minden, amire szükségünk van:

 <%= Html.ActionMenuItem("Home", "Index", "Home") %>
 <%= Html.ActionMenuItem("About", "Index", "About") %>
 <%= Html.ActionMenuItem("Contact", "Index", "Contact") %>  

Mivel a megoldás erre a problémára elég hosszú már írt, hogy a blogomban:

http://arturito.net/2011/08/03/asp-net-mvc-2-highlight-selected-menu-item-on-the-site-master-without-session/

Válaszolt 03/08/2011 17:31
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more