C# RouteValueDictionary在扩展方法中显示为null
使用bootstrap,我遇到了必须在某些链接上设置活动类的问题。我在互联网站上找到了这个助手方法,并为其添加了一些功能。基本上,我想向其中添加RouteValueDictionary和Html项。出于某种原因,我的视图正在传递一个空的RouteValueDictionary,而不是我正在填充的值 我认为我的问题是我在视图方面缺少了一些东西,呈现的HTML实际上可能不会以应有的方式生成路由值 扩展方法:C# RouteValueDictionary在扩展方法中显示为null,c#,twitter-bootstrap,asp.net-mvc-4,routevalues,C#,Twitter Bootstrap,Asp.net Mvc 4,Routevalues,使用bootstrap,我遇到了必须在某些链接上设置活动类的问题。我在互联网站上找到了这个助手方法,并为其添加了一些功能。基本上,我想向其中添加RouteValueDictionary和Html项。出于某种原因,我的视图正在传递一个空的RouteValueDictionary,而不是我正在填充的值 我认为我的问题是我在视图方面缺少了一些东西,呈现的HTML实际上可能不会以应有的方式生成路由值 扩展方法: public static MvcHtmlString MenuLink(this 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:
<a href="/Dashboard/Details/Account">Account</a>
同样,我遇到的问题是MenuLink得到一个空RouteValueDictionary,我觉得它应该包含id
(注意…pHtmlHelper.ViewContext.RoutedData实际上在其RoutedData值中包含id标记…)假设您有一个如下所示的路由(取决于路由的顺序),则代码将按预期工作: 因此,代码:
pHtmlHelper.ActionLink(
pLinkText, // Link Text
pActionName, // Action
pControllerName, // Controller
pRouteValues, // Route Values
null)
.ToHtmlString() };
Url将是
/Dashboard/Details/{id}
路线值:
{
id="Account"
}
变成:
/Dashboard/Details/Account
{
id="Account"
}
/Dashboard/Details/Account