Ответ 1
Мы используем для этого фильтр действий.
...
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var controller = (Controller) filterContext.Controller;
Breadcrumb[] breadcrumbs = _breadcrumbManager.PushBreadcrumb(_breadcrumbLinkText);
controller.ViewData.Add(breadcrumbs);
}
прежде чем вы упомянуте об этом, я тоже испытываю отвращение к местоположению службы в атрибутах фильтра, но у нас осталось несколько вариантов. IBreadcrumbManager выглядит следующим образом:
public interface IBreadcrumbManager
{
Breadcrumb[] PushBreadcrumb(string linkText);
}
Реализация помещает объекты Breadcrumb в Session. Url HttpContext.Current.Request.RawUrl