我這樣做的方式,我把original mvc site map helper source用於渲染breadcrumb,並將其改爲處理參數(儘管在我的項目中我們只顯示參數進行過濾,並允許用戶點擊它們以鬆開其他過濾參數,下面是非常天真的執行節點的文字,只是一個例子可以怎麼做):
private static string SiteMapText(this MvcSiteMapHtmlHelper helper, SiteMapNode node, string linkCssClass, IDictionary<string, object> htmlAttributes)
{
var extraAttributes = new StringBuilder();
foreach (var attribute in htmlAttributes)
{
extraAttributes.Append(" " + attribute.Key + "=\"" + attribute.Value + "\"");
}
string spanHtml;
var paramDictionary = helper.HtmlHelper.ViewContext.RequestContext.HttpContext.Request.Params.ToDictionary();
var queryParams = paramDictionary.Select(x => string.Format("{0}:{1}", x.Key, x.Value));
// here you add request parameters
var title = helper.HtmlHelper.Encode(string.Format("{0} ({1})", node.Title, string.Join(";", queryParams)));
if (!string.IsNullOrEmpty(linkCssClass))
{
spanHtml = string.Format("<span><span class=\"{0}\"{1}>{2}</span>", linkCssClass, extraAttributes, title);
}
else
{
spanHtml = string.Format("<span><span{1}>{0}</span>", title, extraAttributes);
}
return spanHtml;
}
在可以調整SiteMapLink方法相同的方式,包括當前節點的請求參數。
我有同樣的挑戰...你有沒有找到解決方案? – noocyte 2011-10-25 08:22:53