Как я это сделал, я взял исходный источник помощника карты сайта mvc для рендеринга хлебных крошек и изменил его для обработки параметров (хотя в моем проекте мы отображаем только параметры для фильтрации и позволяем пользователю нажимать начтобы потерять другие параметры фильтрации, ниже приведена очень наивная реализация текста узла, просто пример того, как это можно сделать):
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, чтобы включить параметры запроса длятекущий узел.