2008-09-15 11 views

Répondre

12

Nous utilisons un filtre d'action pour cela.

...

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

avant de le mentionner, moi aussi j'ai un dégoût pour l'emplacement de service dans le filtre des attributs - mais il nous reste peu d'options. IBreadcrumbManager ressemble à ceci:

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

La mise en œuvre met les objets miettes de pain dans la session. L'URL est HttpContext.Current.Request.RawUrl

+5

est l'implémentation de IBreadcrumbManager quelque part, nous pouvons regarder? D'où vient _breakcrumbLinkText? – flipdoubt

+1

pourriez-vous montrer un exemple plus détaillé de cette solution à l'aide de fil d'Ariane? Avez-vous une solution de test que vous pourriez partager peut-être? Je ne comprends pas vraiment avec l'interface _breadcrumbManager/IBreadcrumbManager .. – Webking

2

@ Chris: quelque chose comme ceci:

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