如何在 ASP.NET MVC 中实现面包屑导航助手?
-
09-06-2019 - |
题
我知道根据数据你可以很容易地创建一个助手。因此,如果可能,请仅提交包含获取数据的答案。
解决方案
我们为此使用动作过滤器。
...
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);
}
该实现将面包屑对象放入会话中。网址是 HttpContext.Current.Request.RawUrl
其他提示
@克里斯:像这样的东西:
<%
foreach (var item in ViewData.Get<Breadcrumb[]>())
{
%>
<a href="<%= Server.HtmlEncode(item.Url) %>"><%= item.LinkText %></a> »
<%
}
%>
不隶属于 StackOverflow