2008-09-15 25 views

Respuesta

12

Estamos usando un filtro de acción para esto.

...

public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     var controller = (Controller) filterContext.Controller; 
     Breadcrumb[] breadcrumbs = _breadcrumbManager.PushBreadcrumb(_breadcrumbLinkText); 
     controller.ViewData.Add(breadcrumbs); 
    } 

antes mencionas, yo también tengo un disgusto por la ubicación del servicio en los atributos del filtro - pero nos deja con pocas opciones. IBreadcrumbManager se ve así:

public interface IBreadcrumbManager 
{ 
    Breadcrumb[] PushBreadcrumb(string linkText); 
} 

La implementación pone los objetos Breadcrumb en la sesión. La URL es HttpContext.Current.Request.RawUrl

+5

es la implementación de IBreadcrumbManager un lugar donde podamos mirar? ¿De dónde viene _breakcrumbLinkText? – flipdoubt

+1

¿podría mostrar un ejemplo más detallado de esta solución para la ayuda de migas de pan? ¿Tiene alguna solución de prueba que podría compartir tal vez? Realmente no lo entiendo con la interfaz _breadcrumbManager/IBreadcrumbManager .. – Webking

2

@ Chris: algo como esto:

 <% 
     foreach (var item in ViewData.Get<Breadcrumb[]>()) 
      { 
     %> 
       <a href="<%= Server.HtmlEncode(item.Url) %>"><%= item.LinkText %></a> &raquo; 
     <% 
      } 
     %> 
Cuestiones relacionadas