您将如何在 asp.net mvc 中实现面包屑助手?
Posted
技术标签:
【中文标题】您将如何在 asp.net mvc 中实现面包屑助手?【英文标题】:How would you implement a breadcrumb helper in asp.net mvc? 【发布时间】:2010-09-09 02:57:34 【问题描述】:我知道你可以很容易地根据数据创建一个助手。因此,如果可能,请仅提交包含获取数据的答案。
【问题讨论】:
【参考方案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);
实现将面包屑对象放入会话中。网址是HttpContext.Current.Request.RawUrl
【讨论】:
IBreadcrumbManager 的实现是否在我们可以查看的地方? _breakcrumbLinkText 来自哪里? 您能否为面包屑助手提供此解决方案的更详细示例?你有什么可以分享的测试解决方案吗?我真的不明白 _breadcrumbManager/IBreadcrumbManager 接口..【参考方案2】:@Chris:像这样:
<%
foreach (var item in ViewData.Get<Breadcrumb[]>())
%>
<a href="<%= Server.htmlEncode(item.Url) %>"><%= item.LinkText %></a> »
<%
%>
【讨论】:
以上是关于您将如何在 asp.net mvc 中实现面包屑助手?的主要内容,如果未能解决你的问题,请参考以下文章