Я не на 100% доволен этим, я не дошел до стадии, на которой я мог бы полностью проверить влияние этого, но это то, к чему я иду пока. Пожалуйста, ответьте, если у вас есть лучшее решение.
Я передаю ViewContext с главной страницы, чтобы получить ViewContext с данными о маршруте с любого URL, на котором вы сейчас находитесь.
private string GetLocalisedUrl(ViewContext viewContext, string language)
{
viewContext.RouteData.DataTokens[LANGUAGE_ROUTEDATA_KEY] = language;
UrlHelper helper = new UrlHelper(viewContext.RequestContext);
return helper.Action(viewContext.RouteData.Values["action"].ToString(), viewContext.RouteData.Values["controller"].ToString(), viewContext.RouteData.DataTokens);
}