Это может помочь уточнить.Используйте источник, Люк!
Помощник RouteUrl вызывает этот статический метод для генерации URL:
public static string GenerateUrl(string routeName, string actionName, string controllerName, RouteValueDictionary routeValues, RouteCollection routeCollection, RequestContext requestContext, bool includeImplicitMvcValues) {
if (routeCollection == null) {
throw new ArgumentNullException("routeCollection");
}
if (requestContext == null) {
throw new ArgumentNullException("requestContext");
}
RouteValueDictionary mergedRouteValues = RouteValuesHelpers.MergeRouteValues(actionName, controllerName, requestContext.RouteData.Values, routeValues, includeImplicitMvcValues);
VirtualPathData vpd = routeCollection.GetVirtualPathForArea(requestContext, routeName, mergedRouteValues);
if (vpd == null) {
return null;
}
string modifiedUrl = PathHelpers.GenerateClientUrl(requestContext.HttpContext, vpd.VirtualPath);
return modifiedUrl;
}
Обратите внимание на строку:
RouteValueDictionary mergedRouteValues = RouteValuesHelpers.MergeRouteValues(actionName, controllerName, requestContext.RouteData.Values, routeValues, includeImplicitMvcValues);
Это слияниев текущем запросе значения контекста под обложками.Таким образом, вы можете создать свой собственный помощник, который просто вызывает этот статический метод и передает пустые коллекции, чтобы избежать слияния текущих значений контекста маршрута. Поэкспериментируйте и отладьте код MVC, и вы сможете увидеть, какие значения вам нужнынуклеозид.