Asp.net mvc 获取当前路由并向其添加参数

Asp.net mvc 获取当前路由并向其添加参数,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,我在MVC razor视图中有下面的路由url @Url.RouteUrl(new { lang = "EN"}) 我希望它与当前视图的默认映射路由匹配,并在末尾添加querystring参数 我的global.asax.cs文件中只有控制器操作的默认映射路由 我最近安装了ELMAH,现在第一个匹配是 /elmah?lang=EN 我试着看看下面的内容能带给我什么 @Url.RouteUrl(Url.RequestContext.RouteData.Values.Values) 而我的结局

我在MVC razor视图中有下面的路由url

@Url.RouteUrl(new { lang = "EN"})
我希望它与当前视图的默认映射路由匹配,并在末尾添加querystring参数

我的global.asax.cs文件中只有控制器操作的默认映射路由

我最近安装了ELMAH,现在第一个匹配是

/elmah?lang=EN
我试着看看下面的内容能带给我什么

@Url.RouteUrl(Url.RequestContext.RouteData.Values.Values)
而我的结局是

/elmah?Count={number of errors here}

感谢@nemesv回答问题,他在评论中尽可能最好地回答了这个问题


您可以通过两个步骤和一个临时变量来完成。 像这样:


只有这样我才能关闭此文件。

请使用@Url.RouteUrlUrl.RequestContext.RouteData.Values进行尝试,以便只使用一个值。感谢您至少为我提供了当前Url,有什么合适的方法可以将新参数添加到其中。。它不允许我调用.Addlang,因为它不再返回RouteUrl期望的相关路由字典。我做错了吗?你可以通过两个步骤和一个临时变量来完成。比如:@{var myRouteValues=new RouteValueDictionaryUrl.RequestContext.RouteData.Values;myRouteValues.Addlang,EN;}@Url.RouteUrlmyRouteValuesYea我希望不必这样做,但如果这是合适的方式,那就这样吧:你应该把它添加为一个答案,这样我就可以标记它。谢谢不,我不认为这是解决这个问题的合适方法。这就是我把它作为评论发布的原因。但目前我不知道有什么更好的解决方案,但也许有人会发布一个更优雅的答案。
@{ 
    var myRouteValues = new RouteValueDictionary(
        Url.RequestContext.RouteData.Values
    );
    myRouteValues.Add("lang", "EN"); 
} 

@Url.RouteUrl(myRouteValues)