使用引导程序我遇到了必须在某些链接上设置活动类的问题。我在互联网上找到了这个辅助方法,并正在向它添加一些功能。基本上我想向它添加 RouteValueDictionary 和 Html 项目。出于某种原因,我的观点是传递一个空 RouteValueDictionary 而不是我正在填充的值。
我认为我的问题是我在视图方面遗漏了一些东西,呈现的 HTML 可能实际上不会按应有的方式生成路由值。
扩展方法:
public static MvcHtmlString MenuLink(this HtmlHelper pHtmlHelper, string pLinkText, string pActionName, string pControllerName, RouteValueDictionary pRouteValues)
{
var vCurrentAction = pHtmlHelper.ViewContext.RouteData.GetRequiredString("action");
var vCurrentController = pHtmlHelper.ViewContext.RouteData.GetRequiredString("controller");
var vBuilder = new TagBuilder("li") { InnerHtml = pHtmlHelper.ActionLink(pLinkText, pActionName, pControllerName, pRouteValues, null).ToHtmlString() };
if (pControllerName == vCurrentController && pActionName == vCurrentAction) vBuilder.AddCssClass("active");
return new MvcHtmlString(vBuilder.ToString());
}
查看(部分):
@Html.MenuLink("Account", "Details", "Dashboard", new RouteValueDictionary(new {id="Account"}))
呈现的 HTML:
<a href="/Dashboard/Details/Account">Account</a>
再说一次,我遇到的问题是 MenuLink 获得了一个空的 RouteValueDictionary,我觉得它应该包含 id!
(注意... pHtmlHelper.ViewContext.RouteData 实际上在它的 RouteData 值中包含 id 标签......)