Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RouteValueDictionary在扩展方法中显示为null_C#_Twitter Bootstrap_Asp.net Mvc 4_Routevalues - Fatal编程技术网

C# RouteValueDictionary在扩展方法中显示为null

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

使用bootstrap,我遇到了必须在某些链接上设置活动类的问题。我在互联网站上找到了这个助手方法,并为其添加了一些功能。基本上,我想向其中添加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:

<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